これがなぜ機能するのかを理解するのを助けてください。以下のコードは、反復可能なもののリストを示しています。しかし、またはオペレータの使用は、if..else文の中で他のように振る舞う。..ORとELSEはリスト内包表記で似ています
j = set()
my_list = [1, 2, 3 ,3 , 3 ,4, 4]
j_add = j.add
twice = set(x for x in my_list if x in j or j_add(x))
print list(twice)
行があることを期待する:
twice = set(x for x in my_list if x in j else j_add(x))
思想やブール値を返しません値
技術的に言えば、あなたはリストの理解がなく、ジェネレータの表現があります。 –
いいえ、 'または'は 'else'文ではありません。それはテストの一部です。 'if'や' while'文で同じブール式を使うことができます。 'または' ** short-circuits **の場合、左辺の式が真の値を生成した場合、右辺の式は実行されません。 –
ありがとうございます。目的は重複を削除するのではなく、重複を取り除くことです。上記のコードは実行時に[3、4]を返します。 –