【发布时间】:2020-03-17 18:16:04
【问题描述】:
我想舍入忽略无的列表值。
给定一个没有 None 值的列表,我会这样做:
import math
value_list = [1.5, 2.3, 3.2, 4.7]
rounded_list = [math.floor(elem) for elem in value_list]
包含 None 值的列表会出错:
import math
value_list = [1.5, 2.3, None, 4.7]
rounded_list = [math.floor(elem) for elem in value_list]
TypeError: must be real number, not NoneType
我有这个解决方案,但我想知道,是否有一个单线解决方案
import math
value_list = [1.5, 2.3, None, 4.7]
for i in range(len(value_list)):
try:
value_list[i] = math.floor(value_list[i])
except:
pass
【问题讨论】:
-
您想将
None值保留在舍入列表中吗? -
你真的想要
round或floor的数字,如果是后者,你想要floor朝向更低还是朝向负数为零?根据具体情况,您可能需要分别使用round、floor或int。 -
我会说这不是一个很好的骗局......
-
没有三元组,你也可以使用
[x and math.floor(x) for x in value_list]不是说你应该使用这个,但是你可以... -
非常感谢您迟到的回复。是的,我想保留 None 值。不知道,为什么它被标记为重复,因为相关的问题正在跳过 None 值。
标签: python list list-comprehension nonetype floor