如果这是重复的,已经回答了对不起,我没有遇到过这个问题
因为我正在阅读itertools计数,使用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或任何东西)?
另外如何在break
中实施list comprehensions
?
答案 0 :(得分:6)
列表推导或生成器表达式中没有break
,但如果您想在特定条件下停止,则可以使用takewhile
:
>>> from itertools import takewhile, count
>>> list(takewhile(lambda x: x < 20, count(5, 2)))
[5, 7, 9, 11, 13, 15, 17, 19]