列表理解和三元运算符 -> SyntaxError
List comprehension & ternary operator -> SyntaxError
text
、type
、scope
是string,val
、altval
是int,为什么下面的代码语法不正确? (我知道这不是正确的审美方式,但这会影响语法吗?)
result = [(i[val:] if scope=="before" else i[:val] if scope=="after" else i[val:altval] if scope=="beforeafter" else i) if j<=until for j,i in enumerate(text.split("\n"))]
细分为几行:
result = [
(i[val:] if scope=="before"
else i[:val] if scope=="after"
else i[val:altval] if scope=="beforeafter"
else i) if j<=until
for j,i in enumerate(text.split("\n"))]
将行拆分成这样,SyntaxError
在最后一行:
for j,i in enumerate(text.split("\n"))]
^
版本:Python3.x
系统:Windows
我错过了什么?是列表理解限制吗?
只需将最后一个if
条件移动到for
之后:
result = [
(
i[val:] if scope=="before"
else i[:val] if scope=="after"
else i[val:altval] if scope=="beforeafter"
else i
) for j, i in enumerate(text.split("\n"))
if j <= until
]
text
、type
、scope
是string,val
、altval
是int,为什么下面的代码语法不正确? (我知道这不是正确的审美方式,但这会影响语法吗?)
result = [(i[val:] if scope=="before" else i[:val] if scope=="after" else i[val:altval] if scope=="beforeafter" else i) if j<=until for j,i in enumerate(text.split("\n"))]
细分为几行:
result = [
(i[val:] if scope=="before"
else i[:val] if scope=="after"
else i[val:altval] if scope=="beforeafter"
else i) if j<=until
for j,i in enumerate(text.split("\n"))]
将行拆分成这样,SyntaxError
在最后一行:
for j,i in enumerate(text.split("\n"))]
^
版本:Python3.x
系统:Windows
我错过了什么?是列表理解限制吗?
只需将最后一个if
条件移动到for
之后:
result = [
(
i[val:] if scope=="before"
else i[:val] if scope=="after"
else i[val:altval] if scope=="beforeafter"
else i
) for j, i in enumerate(text.split("\n"))
if j <= until
]