Jon*_*han 5 python syntax list-comprehension
Python具有有用且优雅的列表理解语法.但是AFAIK总是产生一个列表.有时我觉得使用列表理解的冲动只是因为它的紧凑性和优雅而不需要结果列表:
[some_func(x) for x in some_list if x>5]
Run Code Online (Sandbox Code Playgroud)
some_func()可能会返回一些我不需要的东西,它可能根本不会返回任何东西.我尝试了生成器语法:
(some_func(x) for x in some_list if x>5)
Run Code Online (Sandbox Code Playgroud)
但正如你可能猜到的那样,它不会迭代some_list.它仅在特定情况下这样做:
other_func(some_func(x) for x in some_list if x>5)
Run Code Online (Sandbox Code Playgroud)
所以......有没有让我无法使用的语法,或者我应该总是回到3行?
for x in some_list:
if x>5:
some_func(x)
Run Code Online (Sandbox Code Playgroud)
Ray*_*ger 10
我现在不会发现它很优雅,但是itertools文档中有一个消耗配方非常快,并且会运行迭代器来完成而不需要构建列表:
>>> consume(some_func(x) for x in some_list if x>5)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |