繁体   English   中英

Python 3 - 列表理解“如果不在列表中”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM