我想舍入列表的值而忽略无。
给出一个没有None值的列表,我会这样做:
import math
value_list = [1.5, 2.3, 3.2, 4.7]
rounded_list = [math.floor(elem) for elem in value_list]
包含无值的列表会产生错误:
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
您可以使用filter
。
list(filter(None,[1.5, 2.3, None, 4.7]))
# [1.5, 2.3, 4.7]
现在,您可以使用列表理解执行math.flooar
。
import math
value_list = [1.5, 2.3, None, 4.7]
rounded_list = [math.floor(elem) for elem in filter(None,value_list)]
四舍五入的值,包括无
rounded_list = [math.floor(elem) if elem else None for elem in value_list]
无无的舍入值
rounded_list = [math.floor(elem) for elem in value_list if elem]
您可以像这样添加None
的支票:
import math
value_list = [1.5, 2.3, None, 4.7]
rounded_list = [math.floor(elem) for elem in value_list if elem is not None]
print(rounded_list)
>>> [1, 2, 4]