如果在Python的内联中有else,请继续
我还没有找到继续/传递if的诀窍,有什么想法吗?。请不要提供显式循环作为解决方案,它应该是一行中的所有内容 我用continue,pass测试了代码,只有当如果在Python的内联中有else,请继续,python,syntax-error,Python,Syntax Error,我还没有找到继续/传递if的诀窍,有什么想法吗?。请不要提供显式循环作为解决方案,它应该是一行中的所有内容 我用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] ^
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
[(“Hola”如果i==1,则继续)用于列表中的i\u num]
^
SyntaxError:无效语法
文件“”,第1行
[(“Hola”如果i==1个else pass)用于列表中的i_num]
^
SyntaxError:无效语法
文件“”,第1行
[(如果i==1:“Hola”)表示列表中的i_num]
^
SyntaxError:无效语法
您可以替换列表中的每个项目:
>>> ['hola' if i == 1 else '' for i in list_num]
['hola', '']
或在满足条件时更换:
>>> ['hola' for i in list_num if i == 1]
['hola']
如果您想在列表理解语句中添加一个保护,它会在末尾。此外,由于它是一个保护,因此没有
else
子句:
list_num=[1,3]
["Hola" for i in list_num if i == 1]
您应该在列表中使用筛选功能。考虑下面的例子:
['Hola' for i in list_num if i == 1]
必须记住,三元运算符仍然是运算符,因此需要返回表达式。因此,不能使用诸如
continue
或pass
之类的语句是有道理的。它们不是表达
然而,无论如何,在列表理解中使用语句是完全没有必要的。事实上,你甚至不需要三元运算符。从列表中筛选项目是一种常见的习惯用法,因此Python提供了特殊的语法,允许您在理解中使用单个if
语句:
>>> list_num = [1, 3]
>>> ["Hola" for i in list_num if i == 1]
['Hola']
>>>
作为三元操作的结果,您将返回“continue”。A如果B或者C是一个三元运算符,它计算B并返回A如果为真,则返回C如果为非。您不能在条件表达式中使用语句。同样,为了替换,我想提供以下替代方法:
[“hola”*(I==1)for I in list_num]
太棒了!谢谢你的回答,第二个正是我想要的。