【发布时间】:2020-08-03 03:56:14
【问题描述】:
我有一个 list1 包含不同的整数。 现在,我想创建第二个列表 (list2),它包含 list1 的所有元素,没有双精度。而且我想用列表理解创建 list2,而无需先将其定义为空列表:
list1 = [3,3,2,1,5,6,1,5,7]
list2 = [i for i in list1 if i not in list2]
print(list2)
我知道,这种情况对于 set() 来说是完美的。 但为什么它不适用于列表理解?
在我发现的这些线程中,我的 list2-syntax 应该没问题:
两个投票最多的答案都建议使用类似的语法
[y for y in a if y not in b]
【问题讨论】:
-
简单 - 列表理解评估之前分配给
list2 -
所以无法通过列表理解来解决这种情况?那么我的情况和投票最多的答案中建议的语法有什么区别呢?
-
这将抛出
NameError,因为在评估列表理解时list2不存在。更一般地说,您不能在列表推导中引用结果列表,列表推导和其他推导构造不是“单行 for 循环”,您不应该这样认为它们。它们用于表达导致新容器或可迭代的映射/过滤操作。
标签: python python-3.x list-comprehension