列表理解&三元运算符>语法错误

2024-09-28 03:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

由于texttypescope是字符串,valaltval是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"))]
^

版本:Python 3.x
系统:Windows

我错过了什么?这是一个列表理解限制吗


Tags: textinforif语法valresultelse
1条回答
网友
1楼 · 发布于 2024-09-28 03:23:30

只需将最后一个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
]

Online Demo

相关问题 更多 >

    热门问题