可能重复:
从 2 个列表中获取差异。Python
我有两个清单
rt = [1,2,3]
dp = [1,2]
找出rt
列表中3
不是dp
列表元素的最pythonic方法是什么?
>>> rt = [1,2,3]
>>> dp = [1,2]
您可以使用集合:
>>> set(rt) - set(dp)
set([3])
或列表理解:
>>> [x for x in rt if x not in dp]
>>> [3]
编辑: jamylak 指出你可以使用一个集合来提高成员查找的效率:
>>> dp_set = set(dp)
>>> [x for x in rt if x not in dp_set]
>>> [3]
这些中的任何一个都可以:
set(rt).difference(set(dp))
或者
[i for i in rt if i not in dp]
或者
set(rt) - set(dp)
如果它们都是集合,您可以这样做:
set(rt) - set(dp)
您可能正在寻找其中之一:
>>> rt = [1,2,3]
>>> dp = [1,2]
>>> set(rt).issubset(dp)
False
>>> 3 in dp
False
听起来你可能想要设置减法:
>>> rt = [1,2,3]
>>> dp = [1,2]
>>> set(rt) - set(dp)
set([3])
你想要什么有点模棱两可。你的意思是你想对照 dp 检查 rt 的每个元素?
for num in rt:
if num in dp:
print(num, 'is in dp!')
else:
print(num, 'is not in dp!')