继续,如果内联的Python

时间:2017-06-15 19:14:30

标签: python syntax-error

我一直无法找到继续/传递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

4 个答案:

答案 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)

重要的是要记住,三元运算符仍然是运算符,因此需要返回表达式。因此,您无法使用continuepass等语句。它们不是表达方式。

但是,无论如何,在列表理解中使用语句是完全没有必要的。事实上,你甚至不需要三元运算符。从列表中过滤项是一种常见的习惯用法,因此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]