具有列表理解的圆形列表值,包括无

问题描述 投票:0回答:3

我想舍入列表的值而忽略无。

给出一个没有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    
python list list-comprehension nonetype floor
3个回答
0
投票

您可以使用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)]

0
投票

四舍五入的值,包括无

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]

0
投票

您可以像这样添加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]
© www.soinside.com 2019 - 2024. All rights reserved.