首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -对比2列表

Python -对比2列表
EN

Stack Overflow用户
提问于 2018-08-19 23:17:04
回答 2查看 160关注 0票数 0

我试过几种方法,但似乎都没有用。我需要对比(而不是比较) Python中的两个列表,以便返回两个列表之间的差异。我需要知道list1中哪些元素在list2中不存在。我试过这个:

代码语言:javascript
复制
zombies = list(set(list1) - set(list2))

但我得到的是一样的,而不是不同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-19 23:32:59

如果您的列表很长,并且速度成为一个重要因素,那么使用“冻结”是不可变的,所以需要注意的是,它们不能更改,但是如果您只需要不同的话,它们在速度方面要快得多:

代码语言:javascript
复制
a = [1, 2, 3, 4, 5]
b = [9, 8, 7, 6, 5]
frozenset(a).difference(b)

返回:

代码语言:javascript
复制
frozenset({1, 2, 3, 4})

我知道在您的问题中,它说明您需要知道列表1中哪些项没有出现在列表2中,但是请注意,这个方法就是这样做的。如果您想知道列表2中哪些项没有出现在列表1中,只需切换列表:

代码语言:javascript
复制
frozenset(b).difference(a)

返回:

代码语言:javascript
复制
frozenset({6, 7, 8, 9})

方法略有不同,但如果不需要下游操作,则速度几乎是上面列出的方法的两倍。

来验证我说的话:

代码语言:javascript
复制
%timeit set(a).difference(set(b))

1000000 loops, best of 3: 844 ns per loop

%timeit frozenset(b).difference(a)

1000000 loops, best of 3: 588 ns per loop

希望这能消除这一差异。

票数 0
EN

Stack Overflow用户

发布于 2018-08-19 23:22:58

试试这个:

代码语言:javascript
复制
list1 = [1,2,3,4,5]
list2 = [3,4,5]
zombies = list(set(list1).difference(set(list2)))

产出将是:

代码语言:javascript
复制
[1, 2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51922547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档