1

可能重复:
从 2 个列表中获取差异。Python

我有两个清单

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

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

4

6 回答 6

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]
于 2012-07-10T04:34:18.873 回答
3

这些中的任何一个都可以:

set(rt).difference(set(dp))

或者

[i for i in rt if i not in dp]

或者

set(rt) - set(dp)
于 2012-07-10T04:40:02.757 回答
3

如果它们都是集合,您可以这样做:

set(rt) - set(dp)
于 2012-07-10T04:34:39.943 回答
2

您可能正在寻找其中之一:

>>> rt = [1,2,3]
>>> dp = [1,2]
>>> set(rt).issubset(dp)
False
>>> 3 in dp
False
于 2012-07-10T04:32:17.400 回答
1

听起来你可能想要设置减法:

>>> rt = [1,2,3]
>>> dp = [1,2]
>>> set(rt) - set(dp)
set([3])
于 2012-07-10T04:36:00.253 回答
0

你想要什么有点模棱两可。你的意思是你想对照 dp 检查 rt 的每个元素?

for num in rt:
    if num in dp:
        print(num, 'is in dp!')
    else:
        print(num, 'is not in dp!')
于 2012-07-10T04:33:50.123 回答