首页 > 解决方案 > 如何在没有 Pandas 的情况下迭代列表列表中的列并更改值

问题描述

我试图分别对每列中的所有浮点数进行平方,然后将它们相加。当我得到列时print(column[1]),但是当我使用另一个for循环时,它会迭代行中的元素而不是列。

如何迭代列中的元素?我不想使用熊猫。

for column in list_of_lists:
    for i in column:
        sum_of_squares = 0
        try:
            square_single = i**2
            sum_of_squares += square_single
            #print(square_single)
        except TypeError:
            pass

list_of_lists存在:

[['', 'appeltaart', 'appelstruif', 'amandelbeschuit', 'brood'],
 ['appel', 3.0, 4.0, 0.0, 0.0], 
 ['gaar', 2.0, 2.0, 0.0, 1.0],
 ['schotel', 2.0, 4.0, 0.0, 0.0],
 ['amandel', 0.0, 0.0, 4.0, 0.0],
 ['deeg', 1.0, 0.0, 2.0, 5.0],
 ['brood', 0.0, 0.0, 0.0, 1.0],
 ['suiker', 0.0, 2.0, 2.0, 0.0]]

标签: pythonlistfor-loop

解决方案


将其分解为几个步骤可能会有所帮助:将您的表格样式列表转换为仅包含您要使用的值的行列表,然后将行转换为列,最后找到平方和对于每一列。

table = [['', 'appeltaart', 'appelstruif', 'amandelbeschuit', 'brood'], ['appel', 3.0, 4.0, 0.0, 0.0], ['gaar', 2.0, 2.0, 0.0, 1.0], ['schotel', 2.0, 4.0, 0.0, 0.0], ['amandel', 0.0, 0.0, 4.0, 0.0], ['deeg', 1.0, 0.0, 2.0, 5.0], ['brood', 0.0, 0.0, 0.0, 1.0], ['suiker', 0.0, 2.0, 2.0, 0.0]]

rows = [row[1:] for row in table[1:]]
columns = zip(*rows)
sum_of_squares = [sum(x ** 2 for x in c) for c in columns]
print(sum_of_squares)
# [18.0, 40.0, 24.0, 27.0]

推荐阅读