gpt4 book ai didi

python - 有没有办法突破列表理解?

转载 作者:行者123 更新时间:2023-11-28 20:39:21 25 4
gpt4 key购买 nike

当使用无限生成器时,我可以使用 if 来阻止项目进入列表,但不是为了打破循环。

这实际上会崩溃并挂起。甚至 KeyboardInterrupt 也救不了我(顺便说一句,这是为什么?)

import itertools
a = [x for x in itertools.count() if x<10]

如果我使用自己的无限生成器

def mygen():
i=0
while True:
yield i
i +=1

这将一直运行到 KeyboardInterrupt

a = [x for x in mygen() if x<10]

现在,显然对于一个合适的 for 循环,我们可以在满足条件时中断

a = []
for x in itertools.count():
a.append(x)
if x>9:
break

所以我的问题是:有什么方法可以打破列表理解吗?

最佳答案

使用 itertools.takewhile 在不再满足条件后停止迭代...:

import itertools

a = [x for x in itertools.takewhile(lambda L: L < 10, itertools.count())]
# a = list(itertools.takewhile(lambda L: < 10, itertools.count()))

本身没有一种方法可以打破列表组合,因此限制可迭代(takewhileislice 等...是一种方式去……)

关于python - 有没有办法突破列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38415586/

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