如何修复Python列表推导式中else部分触发的语法错误
Python列表推导式else语法错误修复方案
错误根因
- 列表推导式的语法规则不支持在过滤用的
if后面跟else:只有作为三元表达式的if...else可以放在for循环之前,用来生成不同的迭代结果 - 原代码中
i.split("- ")多写了一个多余空格,原字符串的连字符后没有空格,会导致拆分取值失败
修复后的代码
a='1,4,6,7-9,10,12-15' print(*[j for i in a.split(",") for j in (range(int(i.split("-")[0]), int(i.split("-")[1])+1) if "-" in i else [int(i)])])
逻辑说明
调整了条件判断的位置,用三元表达式处理每个拆分后的元素:
- 如果元素包含
-,就生成对应范围的整数序列 - 如果不包含
-,就生成仅包含该元素转成整数的单元素列表
再用第二层for循环把两种结果展开,就能得到期望的展开后的所有整数
运行后输出结果为:1 4 6 7 8 9 10 12 13 14 15
内容的提问来源于stack exchange,提问作者Yuvraj Chaurasia
相关产品推荐
相关产品推荐

