我一直无法找到继续/传递if for a for,any ideas的技巧?请不要提供明确的循环作为解决方案,它应该是一行中的所有内容。
我使用continue,pass测试代码,仅在...
list_num=[1,3]
[("Hola" if i == 1 else continue) for i in list_num]
我的试验结果:
[("Hola" if i == 1 else continue) for i in list_num]
^
SyntaxError: invalid syntax
File "<stdin>", line 1
[("Hola" if i == 1 else pass) for i in list_num]
^
SyntaxError: invalid syntax
File "<stdin>", line 1
[(if i == 1: "Hola") for i in list_num]
^
SyntaxError: invalid syntax
答案 0 :(得分:6)
您可以替换列表中的每个项目:
>>> ['hola' if i == 1 else '' for i in list_num]
['hola', '']
或在符合条件时更换:
>>> ['hola' for i in list_num if i == 1]
['hola']
答案 1 :(得分:2)
重要的是要记住,三元运算符仍然是运算符,因此需要返回表达式。因此,您无法使用continue
或pass
等语句。它们不是表达方式。
但是,无论如何,在列表理解中使用语句是完全没有必要的。事实上,你甚至不需要三元运算符。从列表中过滤项是一种常见的习惯用法,因此Python通过允许您在理解中使用单个if
语句来提供特殊语法:
>>> list_num = [1, 3]
>>> ["Hola" for i in list_num if i == 1]
['Hola']
>>>
答案 2 :(得分:1)
如果你想在列表理解语句中添加一个守护,那么最后就是这样。此外,由于它是一名警卫,因此没有else
条款:
list_num=[1,3]
["Hola" for i in list_num if i == 1]
答案 3 :(得分:0)
您应该在列表推导中使用过滤功能。请考虑以下示例:
['Hola' for i in list_num if i == 1]