【发布时间】:2011-05-11 19:19:34
【问题描述】:
假设我有两个列表,l1 和 l2。我想执行l1 - l2,它返回l1的所有元素而不是l2。
我可以想到一种简单的循环方法来执行此操作,但这将是非常低效的。什么是pythonic和有效的方法?
例如,如果我有l1 = [1,2,6,8] and l2 = [2,3,5,8],l1 - l2 应该返回[1,6]
【问题讨论】:
-
提示:PEP8 指出不应使用小写“L”,因为它看起来太像 1。
-
我同意。我读了整个问题和答案,想知道为什么人们一直使用 11 和 12。只有当我读到@spelchekr 的评论时,它才有意义。
-
@JimG。数据框和列表不是一回事。
-
这个问题没有很好的定义。列表允许重复项。 [1, 1, 2, 3] - [1, 2] 应该返回 [1, 3] 还是只返回 [3]?下面的解决方案似乎都假设它应该返回 [3],即所有与第二个列表的元素匹配的成员都应该从第一个列表中删除。您有时需要列表操作来遵守代数性质。如果 A - B = C,则 C + B = A。这里不是这种情况,因为重复的值会丢失。