Skip to main content
 首页 » 编程设计

python之从列表中获取最后一个非无值的 Pythonic 方法是什么

2025年05月04日16lhb25

以下代码从日期值的有序列表中获取最后一个现值:

def test_get_last_value(self): 
    dated_optional_values = [(datetime.datetime(2015, 2, 23), None), 
                    (datetime.datetime(2015, 2, 24), 1.23), 
                    (datetime.datetime(2015, 2, 25), None), 
                    (datetime.datetime(2015, 2, 26), 2.34), 
                    (datetime.datetime(2015, 2, 27), None), 
                    ] 
    present_values = [dated_optional_value[1] for dated_optional_value in dated_optional_values 
        if dated_optional_value[1] is not None] 
    last_present_value = present_values[-1] 
    print('last_present_value=', last_present_value) 

我可以轻松地编写一个从列表末尾开始并迭代返回直到找到值的循环。

是否有更 Pythonic 的方法来实现它?

请您参考如下方法:

next((dop[1] for dop in reversed(date_optional_values) if dop[1] is not None), None) 

您可以将最后的 None 替换为您喜欢的任何其他值,以返回每个值为 None 的情况。或者在它们都是 None 的情况下省略该参数以抛出异常。