重複を保持しながら別のリストにある場合、リストからアイテムを削除する方法は?
私はこれで成功しましたが、より速い方法はありますか?
x = [1,2,3,4,7,7,5,6,7,8,8]
y = [1,4,5,6,8,9]
z = []
for i in x:
if i not in y:
z.append(i)
print z
正しい出力:
[2, 3, 7, 7, 7]
または、リスト内包表記も機能しますが、これらが唯一の方法ですか?
x = [1,2,3,4,7,7,5,6,7,8,8]
y = [1,4,5,6,8,9]
z = [i for i in x if not in y]
set を使用するとはるかに高速ですが、重複は保持されません。
x = [1,2,3,4,7,7,5,6,7,8,8]
y = [1,4,5,6,8,9]
print list(set(x) - set(y))
セット減算により、重複を失う出力が得られました。
[2, 3, 7]