Python列表推导式中使用三元if else未得到预期结果原因咨询
问题根因说明
- 你的列表推导式本身逻辑完全正常,不存在写法失效的问题,问题出在输出环节:列表推导式执行后会生成新的列表对象,你将处理后的结果赋值给了
rslt变量,但最后一行代码仍然打印的是未修改的原列表data,所以看不到处理后的效果。 - 额外优化点:Python3中
/运算符执行的是浮点数除法,比如偶数4经过4/2处理后会得到2.0,如果你预期得到整数结果,可以替换为整数除法运算符//。
修正后的代码示例
entry = input('Enter a number list ').split() # Convert all items to integer data = [int(x) for x in entry] print(data) rslt = [(a//2 if a%2==0 else 2*a) for a in data] # 打印处理后的结果变量 print(rslt)
运行效果示例
输入3 4 5后的输出:
Enter a number list 3 4 5 [3, 4, 5] [6, 2, 10] [Program finished]
内容的提问来源于stack exchange,提问作者Tuchar Das
相关产品推荐
相关产品推荐

