我有一个心理障碍,是否有一个通常的python 1-liner来终止列表理解或基于某些条件的genex?用法示例:
def primes():
# yields forever e.g. 2, 3, 5, 7, 11, 13 ...
[p for p in primes() if p < 10]
# will never terminate, and will go onto infinite loop consuming primes()
[p for p in primes() while p < 10]
# should return [2, 3, 5, 7], and consumed 5 items from my generator
Run Code Online (Sandbox Code Playgroud)
我知道itertools消费,islice但是那些家伙要求你提前知道要消耗多少件物品.
eum*_*iro 10
你可以使用itertools.takewhile:
itertools.takewhile(lambda x: x < 10, primes())
Run Code Online (Sandbox Code Playgroud)
或者...如果你想避免lambda:
itertools.takewhile((10.).__gt__, primes())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |