我有两个列表,l1l2。我需要l1中的项目,这些项目不在l2中。

l1 = [2, 3, 4, 5]
l2 = [0, 1, 2, 3]

我只想得到[4,5]-只有l1中的新值。
[i for i in l1 if not i in l2 ]

我可以不做迭代吗?

最佳答案

简短的回答,是的:list(set(l1) - set(l2)),尽管这不会保持顺序。

长答案,不,因为在内部CPU总是会迭代的。尽管如果您使用set(),则迭代将得到高度优化,并且迭代速度将比列表理解要快得多(更不用说检查成员资格value in list的速度是,而otset_rstrong的集合集和列表列表则要快)。

关于python - 从Python中的两个列表中获得差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5305164/

10-12 23:46