愚蠢的问题:
我有一个简单的for循环,后跟一个简单的if语句:
for airport in airports:
if airport.is_important:
Run Code Online (Sandbox Code Playgroud)
而且我想知道我是否能以某种方式将其写成单行.
所以,是的,我可以这样做:
for airport in (airport for airport in airports if airport.is_important):
Run Code Online (Sandbox Code Playgroud)
但它看起来如此愚蠢和冗余(for airport in airport for airport in airports...).
有没有更好的办法?
e-s*_*tis 75
不,没有更短的路.通常,您甚至会将其分成两行:
important_airports = (airport for airport in airports if airport.is_important)
for airport in important_airports:
# do stuff
Run Code Online (Sandbox Code Playgroud)
这更灵活,更易于阅读,并且仍然不会消耗太多内存.
Chr*_*heD 29
你可以做到
for airport in filter(lamdba x: x.is_important, airports):
# do stuff...
Run Code Online (Sandbox Code Playgroud)
小智 15
我会在循环中使用负面防守.它是可读的,并没有引入额外的缩进级别.
for airport in airports:
if not airport.is_important: continue
<body of loop>
Run Code Online (Sandbox Code Playgroud)
Mabe这个,但它或多或少相同的冗长...
import itertools
for airport in itertools.ifilter(lambda x: x.is_important, airports):
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75200 次 |
| 最近记录: |