Skip to main content
 首页 » 编程设计

python之嵌套列表中第一个元素的总和

2025年05月04日13Free-Thinker

我正在尝试获取嵌套列表中的第一个元素并对值求和。

例如。

nested_list = [[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']] 
print sum(i[0] for i in nested_list) 

但是,有时列表中的第一个元素是 None 而不是

nested_list = [[1, 'a'], [None, 'b'], [3, 'c'], [4, 'd']] 
new = [] 
for nest in nested_list: 
    if not nest[0]: 
        pass 
    else: 
        new.append(nest[0]) 
print sum(nest) 

想知道编写此代码的更好方法是什么?

请您参考如下方法:

然后只是过滤,在这种情况下测试不是None的值:

sum(i[0] for i in nested_list if i[0] is not None) 

生成器表达式(以及 list、dict 和 set comprehensions)采用任意数量的嵌套 for 循环和 if 语句。以上相当于:

for i in nested_list: 
    if i[0] is not None: 
        i[0]  # used to sum() 

请注意这如何反射(reflect)您自己的代码;我没有使用 if not ...: pass 和 else,而是将测试反转为只允许您实际可以求和的值。如果您需要更多带过滤器的循环,只需添加更多的 for 循环或 if 语句,从左到右嵌套,或者使用 and 或 或 将多个测试串在一个 if 过滤器中。

在您的特定情况下,只需测试 if i[0] 就足够了;这将过滤掉 None 和 0,但后一个值无论如何都不会对总和产生影响:

sum(i[0] for i in nested_list if i[0]) 

您已经在自己的循环代码中的 if 测试中解决了这个问题。