我有一个主列表,它重新组合我拥有的每个ID。
master = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
在所有这些ID中,我想排除其中一些。所以我做了第二个必须排除的ID列表
exclude = [1, 4, 5]
在您看来,有什么好的操作可以:
master_exclude = [2, 3, 6, 7, 8, 9, 10]
如果你知道我的意思?
谢谢!
答案 0 :(得分:5)
此条件list comprehension将起作用:
master_exclude = [x for x in master if x not in exclude]
如果这些相关列表较大,请考虑首先将exclude
转换为set
,以使包含检查更具效果:
exclude = set(exclude)
答案 1 :(得分:1)
你可以通过一个简单的for循环来做这样的事情。
master = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
exclude = [1, 4, 5]
for o in exclude:
try:
master.remove(o)
except ValueError:
pass
print(master) # [2, 3, 6, 7, 8, 9, 10]
答案 2 :(得分:1)
list-comprehension
绝对是正确的方法,但这也可以通过filter
完成。不是理想的解决方案,而是另一个想法:
master_exclude = list(filter(lambda i: i not in exclude, master))
给出:
[2, 3, 6, 7, 8, 9, 10]
或者您可以使用while
和for-loop
:
for i in exclude:
while master.count(i) > 0:
master.remove(i)
给出相同的结果。
答案 3 :(得分:0)
这将删除master
exclude
列表中的元素
for i in exclude:
master.remove(i)
不会删除重复项。