なぜこれが機能するのかを理解するのを手伝ってください。以下のコードは、イテラブル内の重複をリストします。ただし、or演算子の使用は、if..else ステートメントの 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))
考えたり、値ではなくブール値を返します