在Python中如何将条件循环与for循环相结合?

在Python中如何将条件循环与for循环相结合?,python,for-loop,syntax,simplification,Python,For Loop,Syntax,Simplification,我有一个简单的例子。我认为在Python中,用最少的努力就可以组合if语句和for循环。鉴于: sublists = [number1, number2, number3] for sublist in sublists: if sublist: print(sublist) 我想我可以将for循环压缩为: for sublist in sublists if sublist: 但这会导致无效语法。我对这个例子不太挑剔,我只想要一个简单的if语句加循环的方法。如果您

我有一个简单的例子。我认为在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中不能将语法简化为一行,但实际上必须键入循环和if语句的所有行链接

清单理解除外(见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]

您可以使用
filter
或列表理解/生成器表达式,但它可能不会比第一个版本短,并且可能不太可读。只使用第一个版本,我相信python语法没有提供任何特殊的简洁形式,除了您只希望创建一个新的iterable之外。如果你真的想更全面地循环,你可以从答案中的各种选项中选择你的风格,或者坚持你的防白痴原创风格。这个不加糖,就是这个,太干净了!虽然我认为它需要打印(),但我会将此标记为答案,因为这正是我想要的。谢谢,非常高兴我帮助了:)干杯!谢谢,我会读更多关于理解的内容,因为这似乎是解决这类问题的最佳方法。我能在这里加上一句其他的话吗?最接近OP所寻求的风格,尽管对于许多快速阅读这一行的人来说可能不太清晰。行数较少,但并不比原文更简洁。