[英]Python 3 - list comprehension “if not in list”
我有一个 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 的内容。 虽然在语法上它是正确的,但在语义上它是没有意义的——当您在列表理解的过滤器/保护部分中引用它时,还没有定义 list2。
我不是 100% 确定,但我相信在理解完成之前列表不会完全填充。
如果您不能使用列表理解,您可以简单地执行此操作
List(Set(list1))
另一种选择(也不是你想要的)
list1 = [3,3,2,1,5,6,1,5,7]
list2 = []
for itm in list1:
if itm not in list2:
list2.append(itm)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.