繁体   English   中英

如何在列表理解中应用BREAK for Itertools?

[英]how to apply BREAK for Itertools count in List Comprehensions?

如果这是重复的,已经回答了对不起,我没有遇到这个问题

因为我正在阅读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或任何东西)?

另外如何在list comprehensions实现break

列表takewhile或生成器表达式中没有break ,但如果您想在某个条件下停止,则可以使用takewhile

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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