大多数pythonic意味着找出一个列表中的元素是否不是另一个列表的成员

时间:2012-07-10 04:30:19

标签: python

  

可能重复:
  Get difference from 2 lists. Python

我有两个列表

rt = [1,2,3]
dp = [1,2]

rt列表中找出3不是dp列表的元素的最pythonic方法是什么?

6 个答案:

答案 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!')