我有两个列表
rt = [1,2,3]
dp = [1,2]
在rt
列表中找出3
不是dp
列表的元素的最pythonic方法是什么?
答案 0 :(得分:7)
>>> 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]
答案 1 :(得分:3)
如果它们都是两组,你可以这样做:
set(rt) - set(dp)
答案 2 :(得分:3)
其中任何一个都可行:
set(rt).difference(set(dp))
OR
[i for i in rt if i not in dp]
OR
set(rt) - set(dp)
答案 3 :(得分:2)
您可能正在寻找其中一种:
>>> rt = [1,2,3]
>>> dp = [1,2]
>>> set(rt).issubset(dp)
False
>>> 3 in dp
False
答案 4 :(得分:1)
听起来你可能想要设置减法:
>>> rt = [1,2,3]
>>> dp = [1,2]
>>> set(rt) - set(dp)
set([3])
答案 5 :(得分:0)
有点暧昧你想要什么。你的意思是你想要检查rt的每个元素与dp?
for num in rt:
if num in dp:
print(num, 'is in dp!')
else:
print(num, 'is not in dp!')