[英]How to subtract every instance of an item in list b from list a
所以我在 Python 中有以下兩個列表:
a = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
b = [2, 4]
我想像這樣創建一個 function :
x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
y = [2, 4]
def array_diff(a, b):
# CODE HERE
print(array_diff(x, y)) # Output = [1, 3, 3, 3]
我最初嘗試了這個解決方案:
def array_diff(a, b):
for item in a:
for i in range(len(b)):
if b[i] == item:
a.remove(b[i])
return a
但是這段代碼返回
[1, 2, 3, 3, 3, 4, 4]
我嘗試更改代碼,但沒有成功。 我嘗試在這里找到解決方案,但沒有任何彈出。
您可以使用列表推導:
x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
y = [2, 4]
def array_diff(a, b):
return [i for i in a if i not in b]
print(array_diff(x, y))
Output:
[1, 3, 3, 3]
如果您將通過迭代(不超過)一次來使用array_diff
,如下所示:
for i in array_diff:
print(i)
您可以使用yield
關鍵字提高效率 b:
x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
y = [2, 4]
def array_diff(a, b):
for i in a:
if i not in b:
yield i
for i in array_diff(x, y):
print(i)
Output:
1
3
3
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.