繁体   English   中英

遍历 Python 中的列表列表并总结所有索引 1,然后是所有索引 2 等

[英]Loop through list of lists in Python and sum up all index 1, then all index 2 etc

一直试图找出一种方法来总结 Python 中列表列表中的每个索引。 例如这样的列表列表:

carbon_dioxide = ([" ", "1990", "1991", "1992"], ["factories", "100", "101", "102"], ["food industry", "50", "51", "52"], ["transports", "25", "26", "27"])

我想排除第一个列表,然后将列表 2(“100”)中的索引 1 与列表 3(“50”)和 4(“25”)中的索引 1 相加。

然后我希望迭代继续并总结所有列表中的索引 2。

我不想导入任何模块,只想导入纯代码,因为我是一个试图掌握基础知识的初学者。 我尝试了不同的解决方案,但没有。 例如这个,但它给了我除了 list[0] 之外的整个列表列表:

for i in range(1, len(carbon_dioxide)):
    print(carbon_dioxide[i])

你有什么想法? 谢谢!

如果我没记错的话,听起来你想每年增加二氧化碳水平。 一个更易于消化的 output 可能是一本字典,其中您有一年到(二氧化碳水平总和)的映射。

year_nums = zip(*(c[1:] for c in carbon_dioxide))  # gives us a year and all the CO2 levels

output = {yn[0]: sum(map(int, yn[1:])) for yn in year_nums}

print(output)
>> {'1990': 175, '1991': 178, '1992': 181}

我不确定那是你要找的东西,仍然:

carbon_dioxide = ([" ", "1990", "1991", "1992"], ["factories", "100", "101", "102"], ["food industry", "50", "51", "52"], ["transports", "25", "26", "27"])

for k in range(1,4):
    for i in range(1, len(carbon_dioxide)):
        for j in range(i+1,len(carbon_dioxide)):
            carbon_dioxide[i][k] = int(carbon_dioxide[i][k]) + int(carbon_dioxide[j][k])
    print(carbon_dioxide)

Output:

([' ', '1990', '1991', '1992'], ['factories', 175, '101', '102'], ['food industry', 75, '51', '52'], ['transports', '25', '26', '27'])
([' ', '1990', '1991', '1992'], ['factories', 175, 178, '102'], ['food industry', 75, 77, '52'], ['transports', '25', '26', '27'])
([' ', '1990', '1991', '1992'], ['factories', 175, 178, 181], ['food industry', 75, 77, 79], ['transports', '25', '26', '27'])

添加到您的开始。

results = [0]*(len(carbon_dioxide[0])-1)     # Initialize array for results
                                             # with all zeros
for sublist in carbon_dioxide[1:]:           # skips 1st sublist in crbon_dioxide
    for index, v in enumerate(sublist[1:]):  # skips first item in each sublist 
                                             # i.e. skips "", "factories", etc.
        results[index] += int(v)             # Add to result at index 'index'
        
print(results)  # [175, 178, 181]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM