請幫助我理解爲什麼這會起作用。下面的代碼列出了迭代中的重複項。然而,使用或運營商的行爲就像在if..else語句的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'語句中使用相同的布爾表達式。 '或'**短路**,如果左邊的表達式產生一個真值,它將不執行右邊的表達式。 –
謝謝..目的不是爲了刪除重複內容,而是爲了捕獲它們。上面的代碼在執行時會返回[3,4]。 –