我想知道是否有类似的方法来在 for 循环中强制执行 if 子句,因为它在列表理解中。所以我希望有一个类似的结构
[ expression for item in list if conditional ]
在一个循环中,所以像
for item in list if conditional:
expression
我知道我可以在下一行添加条件,但是我想知道是否可以在 for 循环中构建
我想知道是否有类似的方法来在 for 循环中强制执行 if 子句,因为它在列表理解中。所以我希望有一个类似的结构
[ expression for item in list if conditional ]
在一个循环中,所以像
for item in list if conditional:
expression
我知道我可以在下一行添加条件,但是我想知道是否可以在 for 循环中构建
您可以使用生成器理解
for item in ( x for x in list if condition(x) ):
pass
这很混乱,想想吧。使用单独的 if 语句;它使您的代码结构更好,并且您希望代码结构更好。
不幸的是,没有比以下更好的方法了:
for item in iterable:
if not conditional:
continue
# whatever
您可以创建一个生成器,但通常这有点矫枉过正:
iteritems = (item for item in iterable if conditional)
for item in iteritems:
pass # whatever
当然,您可以进一步压缩它:
for item in (item for item in iterable if conditional):
pass # whatever
但我真的不再称它为漂亮了。continue
让我们在这种情况下保持良好状态。
一般来说,我会采用@ThiefMaster 的方法。如果您正在寻找另一种方法(有时我会这样做,这取决于条件的简洁程度以及它与实际“做”部分的集成程度),您可以走功能路线并使用 filter().. .
for item in filter(lambda x: conditional, iterable):
pass #whatever