Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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
Python3:在';如果';在for循环之前使用_Python_Python 3.x_Loops - Fatal编程技术网

Python3:在';如果';在for循环之前使用

Python3:在';如果';在for循环之前使用,python,python-3.x,loops,Python,Python 3.x,Loops,如果在没有else的for循环之前使用时,我会得到一个语法错误,但是如果存在else,则不会出现这种错误 这是我的密码: data=[[45, 12],[55,21],[19, -2],[104, 20]] retData= ['Close' if i>54 and j>7 for [i,j] in data] # getting a syntax error here :( return retData 下面的代码起作用,在for循环之前有if和else data=[[45, 1

如果在没有
else
for
循环之前使用
时,我会得到一个语法错误,但是如果存在
else
,则不会出现这种错误

这是我的密码:

data=[[45, 12],[55,21],[19, -2],[104, 20]]
retData= ['Close' if i>54 and j>7 for [i,j] in data]
# getting a syntax error here :(
return retData
下面的代码起作用,在
for
循环之前有
if
else

data=[[45, 12],[55,21],[19, -2],[104, 20]]
retData= ['Close' if i>54 and j>7 else 'Open' for [i,j] in data]
# No Syntax error here!!
return retData

您要查找的语法是

data=[[45, 12],[55,21],[19, -2],[104, 20]]
retData= ['Close'  for [i,j] in data if i>54 and j>7]

如果列表理解中只有
if
条件,那么它应该位于循环语法之后

您要查找的语法是

data=[[45, 12],[55,21],[19, -2],[104, 20]]
retData= ['Close'  for [i,j] in data if i>54 and j>7]

如果列表理解中只有
if
条件,那么它应该位于循环语法之后

Oups,三元运算符的Python语法之间存在混淆:

expression_if_true if condition else expression_if_false
和条件列表理解

[ expression for elt in list if condition ]
第二个代码是一个无条件列表理解(如果
的后面是,则为no
),其中表达式包含一个三元运算符

在第一个代码中,没有else条件,因此必须使用条件列表理解,其中if作用于for,并置于if之后:

retData= ['Close' for [i,j] in data if i>54 and j>7]

例如,三元运算符的Python语法之间存在混淆:

expression_if_true if condition else expression_if_false
和条件列表理解

[ expression for elt in list if condition ]
第二个代码是一个无条件列表理解(如果
的后面是,则为no
),其中表达式包含一个三元运算符

在第一个代码中,没有else条件,因此必须使用条件列表理解,其中if作用于for,并置于if之后:

retData= ['Close' for [i,j] in data if i>54 and j>7]

在第一种情况下,你预计会发生什么?如果不满足条件,是否要从列表中排除项目?在这种情况下,您应该使用语法
[如果条件(v)中的条件(v)表示v中的某物]
。是的,如果条件不满足,则应排除列表中的项目,但问题仍然是,语法
[如果条件(v)中的条件(v)表示v中的某物(v)表示v中的其他某物]
为什么工作得非常好,但是数据中v的语法
[something(v)if condition(v)]
给出了一个错误?如果不满足条件,是否要从列表中排除项目?在这种情况下,您应该使用语法
[如果条件(v)中的条件(v)表示v中的某物]
。是的,如果条件不满足,则应排除列表中的项目,但问题仍然是,语法
[如果条件(v)中的条件(v)表示v中的某物(v)表示v中的其他某物]
为什么工作得非常好,但是数据中v的语法
[something(v)if condition(v)]
给出了一个错误。