gpt4 book ai didi

python - 如何在列表理解中为 Itertools 计数应用 BREAK?

转载 作者:太空狗 更新时间:2023-10-30 02:27:38 25 4
gpt4 key购买 nike

如果这是重复的,已经回答了那么抱歉,我没有遇到这个问题

当我阅读 itertools count 时,使用 for 循环生成迭代器很容易,我试图在列表理解中做到这一点,但我遇到了这个问题

from itertools import *

使用for循环

for x in itertools.count(5,2):
if x > 20:
break
else:
print(x)
5
7
9
11
13
15
17
19

我试着在列表理解中做到这一点

[x if x<20 else break for x in count(5,2)]
File "<ipython-input-9-436737c82775>", line 1
[x if x<20 else break for x in count(5,2)]
^
SyntaxError: invalid syntax

我尝试了 islice 方法,我得到了答案

[x for x in itertools.islice(itertools.count(5),10)]
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

在不使用 islice 方法的情况下,如何仅使用 count 方法退出(使用 break 或任何东西)?

另外如何在list comprehensions中实现break

最佳答案

列表推导式或生成器表达式中没有break,但如果您想在特定条件下停止,可以使用takewhile。 :

>>> from itertools import takewhile, count
>>> list(takewhile(lambda x: x < 20, count(5, 2)))
[5, 7, 9, 11, 13, 15, 17, 19]

关于python - 如何在列表理解中为 Itertools 计数应用 BREAK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40201847/

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