Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在Python的内联中有else,请继续_Python_Syntax Error - Fatal编程技术网

如果在Python的内联中有else,请继续

如果在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] ^

我还没有找到继续/传递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]
                                    ^
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]
太棒了!谢谢你的回答,第二个正是我想要的。