python - 如何在没有 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]]
解决方案
将其分解为几个步骤可能会有所帮助:将您的表格样式列表转换为仅包含您要使用的值的行列表,然后将行转换为列,最后找到平方和对于每一列。
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]
推荐阅读
- julia - 是什么让 Julia 可组合?
- r - 将日期和时间从因子转换为R中的数字
- go - 如何使用 chromedp 修改 HTML 元素的属性
- python - Google Cloud Platform - 最终例外:b'[Errno 28] No space left on device') 用于下载
- javascript - 如何在点击时淡出图像
- string - 在 sqlite-jdbc 驱动(3.23 或 3.30)中,字符串过长时更新失败,无一例外。但是在命令行和navicat下就可以了
- angular - Angular Material 嵌套 Stepper 的标签位置被覆盖
- java - cmd突然关闭时如何确保Java程序创建的临时文件被删除
- c++ - C++ shared_ptr,如何从方法内创建的共享指针返回对对象的引用?
- python - python继承类函数