【发布时间】:2018-03-15 19:02:57
【问题描述】:
在没有else 的for 循环之前使用if 时出现语法错误,但当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
【问题讨论】:
-
您期望在第一种情况下会发生什么?如果条件不满足,是否要从列表中排除项目?在这种情况下,您应该使用语法
[something(v) for v in data if condition(v)]。 -
是的,如果不满足条件,则应排除列表中的项目,但问题仍然存在,为什么语法
[something(v) if condition(v) else somethingElse(v) for v in data ]工作得很好,但语法[something(v) if condition(v)) for v in data ]给出错误.
标签: python python-3.x loops