继续,如果其他内联的Python

继续,如果其他内联的Python

问题描述:

我一直无法找到继续/传递如果在一个为任何想法的窍门?请不要提供明确的回路作为解决方案,它应该是一行一行。继续,如果其他内联的Python

我测试了继续的代码,通过且仅当...

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

你回来“继续”作为三元操作的结果。一个if B else C是一个三元运算符,它评估B并返回A(如果为真),否则返回C. –

+0

您不能在条件*表达式*中使用*语句*。 – vaultah

可以在列表替换每个项目:

>>> ['hola' if i == 1 else '' for i in list_num] 
['hola', ''] 

或者在条件满足时更换:

>>> ['hola' for i in list_num if i == 1] 
['hola'] 
+1

同样为了替换,我想提供这种替代方法:'[“hola”*(i == 1)for list_num]' – Peri461

+0

太棒了!感谢您的回答,第二个正是我想要的。 – chuseuiti

如果你想添加一个警戒列表理解语句,它会在最后。此外,由于这是一个后卫​​没有else条款:

list_num=[1,3] 
["Hola" for i in list_num if i == 1] 

您应该使用过滤功能列表中的理解。请看下面的例子:

['Hola' for i in list_num if i == 1] 

要记住,三元运算符是仍然操作,因此需要返回一个表达式是很重要的。因此,您不能使用诸如continuepass之类的语句。他们不是表达。

但是,无论如何,在列表理解中使用语句是完全不必要的。事实上,你甚至不需要三元运算符。从列表过滤项,是一种常见的成语,所以Python允许您在修真使用单if语句为此提供了特殊的语法:

>>> list_num = [1, 3] 
>>> ["Hola" for i in list_num if i == 1] 
['Hola'] 
>>>