我有一个简单的例子。我认为可以在Python中以最小的工作量组合if语句和for循环。鉴于:
sublists = [number1, number2, number3]
for sublist in sublists:
if sublist:
print(sublist)
我认为我可以将for循环压缩为:
for sublist in sublists if sublist:
但这会导致语法无效。在这个例子中,我并不是特别讲究,我只想要一种简单的if语句带循环的方法。
答案 0 :(得分:2)
如果要从原始子列表中过滤掉所有空子列表,则必须执行以下操作。这将为您提供所有非空的子列表。
print([sublist for sublist in sublists if sublist])
*针对语法进行了编辑
答案 1 :(得分:1)
我发布后立即在翻译中解决了这个问题。
for x in ( x for x in sublists if x ):
我认为不是很干净,嵌套的if语句更具可读性。如果有更清洁的方法,我愿意接受其他建议。
答案 2 :(得分:1)
我认为您无法将语法简化为python中的单行代码,但实际上必须键入所有循环和if语句的链接行。
列表推导(5.1.3中的see here)是一个例外。它们可用于从列表中生成新列表。一个例子:
test_list = ["Blue Candy", "Apple", "Red Candy", "Orange", "Pear", "Yellow Candy"]
candy_list = [x for x in test_list if "Candy" in x]