首页 > 解决方案 > 通过过滤列表进行循环

问题描述

我有代码

for item in list:
    if item.some_boolean_property():
        several complicated commands here

我想将这些压缩forif一个表达式,以便命令可以减少一级缩进。我能够将其重构为代码

for item in [item for item in list if item.some_boolean_property()]:
    several complicated commands here

它确实有效,但是,你知道,它是丑陋的。:) 有没有更聪明的方法来做到这一点?

标签: python

解决方案


要保存一个缩进级别,请使用continue跳过您不感兴趣的迭代:

for item in list:
    if not item.some_boolean_property():
        continue # skip this iteration

    # several complicated commands here,
    # one indentation level less than above!

推荐阅读