1. ホーム
  2. python

[解決済み] FORループとIF文の組み合わせのPythonicな方法

2022-03-17 11:27:52

質問

など、forループとif文の両方を別行動で使う方法は知っています。

>>> a = [2,3,4,5,6,7,8,9,0]
... xyz = [0,12,4,6,242,7,9]
... for x in xyz:
...     if x in a:
...         print(x)
0,4,6,7,9

というように、ステートメントが単純な場合、リスト内包を使ってこれらを組み合わせることができるんですね。

print([x for x in xyz if x in a])

しかし、forループとif文の組み合わせの後に発生する複雑なコマンドのセット(単なる"print x"ではない)を示す良い例はどこにもありません(コピーして学習するためのもの)。私が期待するのは、次のようなものです。

for x in xyz if x not in a:
    print(x...)

これはpythonが想定している方法と違うだけなのでしょうか?

解決方法は?

を使用することができます。 ジェネレータ式 このように

gen = (x for x in xyz if x not in a)

for x in gen:
    print(x)