Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
199 views
in Technique[技术] by (71.8m points)

python - Single line for loop over iterator with an "if" filter?

Silly question:
I have a simple for loop followed by a simple if statement:

for airport in airports:
    if airport.is_important:

and I was wondering if I can write this as a single line somehow.
So, yes, I can do this:

for airport in (airport for airport in airports if airport.is_important):

but it reads so silly and redundant (for airport in airport for airport in airports...).
Is there a better way?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

No, there is no shorter way. Usually, you will even break it into two lines :

important_airports = (airport for airport in airports if airport.is_important)
for airport in important_airports:
    # do stuff

This is more flexible, easier to read and still don't consume much memory.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...