如何在 Python 中结合条件语句和 for 循环?

How can I combine a conditional with a for loop in Python?

我有一个简单的例子。我认为可以在 Python 中以最小的努力组合 if 语句和 for 循环。给定:

sublists = [number1, number2, number3]

for sublist in sublists:
    if sublist:
        print(sublist)

我想我可以将 for 循环压缩为:

for sublist in sublists if sublist:

但这会导致语法无效。我对这个例子并不太特别,我只想要一种方法,其中包含一个带有循环的简单 if 语句。

如果您想从原始子列表中过滤掉所有空子列表,则必须执行如下操作。这将为您提供所有非空子列表。

print([sublist for sublist in sublists if sublist])

*针对语法进行了编辑

我发布后立即在解释器中解决了这个问题。

for x in ( x for x in sublists if x ):

没有我想要的那么干净,嵌套的 if 语句在我看来更具可读性。如果有更简洁的方法,我愿意接受其他建议。

我认为您无法将语法简化为 python 中的一行,但确实必须键入链接 for 循环和 if 语句的所有行。

列表解析是一个例外(see here 在 5.1.3)。它们可用于从列表中生成新列表。一个例子:

test_list = ["Blue Candy", "Apple", "Red Candy", "Orange", "Pear", "Yellow Candy"]
candy_list = [x for x in test_list if "Candy" in x]