尝试使用单行创建正数列表,但它对我不起作用。需要帮助
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
我的代码:
newlist = [n if n>0 else pass for n in numbers]
为什么else pass
无效?
答案 0 :(得分:7)
你几乎拥有它:
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
newlist = [n for n in numbers if n > 0]
<强>输出:强>
[34.6, 44.9, 68.3, 44.6, 12.7]
如果你需要其他的,用无替换负数,例如:(这不是你要求的,但我在这里包括它是为了完整性)
newlist = [n if n > 0 else None for n in numbers]
<强>输出:强>
[34.6, None, 44.9, 68.3, None, 44.6, 12.7]
最后,如果您想将所有数字转换为正数,请使用abs
:
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
newlist = [abs(n) for n in numbers]
<强>输出:强>
[34.6, 203.4, 44.9, 68.3, 12.2, 44.6, 12.7]