gpt4 book ai didi

python - 我可以在列表理解中形成列表时使用列表吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:35 25 4
gpt4 key购买 nike

例如下面的代码

primeList = []
for val in range(2, num):
if not any(val % i == 0 for i in primeList):
primeList.append(val)

我怎样才能将这段确切的代码转化为列表推导式?

最佳答案

不,你不能,因为在理解完成迭代之前,列表不作为 Python 对象存在。您不能引用不存在的对象。老实说,我只想将其保留为 for 循环 - 列表推导并不是替换所有列表构造循环的 Elixir 。

但是...您可能会变得棘手并使用仅按需评估的生成器。将其与列表的 extend() 方法相结合,该方法在获取元素时将元素添加到列表中(无论如何在我的测试中),您可以使用要扩展的列表的当前内容当你扩展它时。

# make sure to set `num`
plist = []
plist.extend(c for c in range(2, num) if not any(c % p == 0 for p in plist))

公平警告:据我所知,extend() 在生成元素时将元素添加到列表中的事实不是规范的一部分,因此这段代码是否有效可能是依赖于实现。但我在 Python 2.7 和 3.4 中对其进行了测试,每次都得到一个素数列表。

关于python - 我可以在列表理解中形成列表时使用列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33627085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com