python - 在 Python 中,使用从文件中提取的值列表,如何找到浮点值列的总和?
问题描述
我无法找到使用 Python 3 从 txt 文件中提取的值列表的列的总和。该文件包含类似于以下内容的数据:
- 1800 -0.19 -0.11
- 1801 -0.1 -0.17
- 1802 -0.2 -0.11
- .
- . [续]
- .
- 1900 -0.15 -.15
如何分别找到第二列和第三列的总和?
首先,我使用打开文件
with open('file.txt') as f:
for line in f:
column_2 = line.split()
b = float(column_2[-2])
print(b)
我能够成功打印第二列值。但是,在我添加之后:
print(sum(b))
它无法运行代码。
当我运行代码时,我得到了错误:
'int' object is not callable
解决方案
您的代码有两个问题。
首先,您已为sum
. 不要为变量使用内置名称。
执行del sum
,一切都会好起来的。
但是,您的逻辑仍然是错误的,因为这样做只需要b 的最后一个值的总和。您需要存储您在某处看到的所有值。
以您做事的方式,最好的方法是使用累加器变量:
b_sum = 0
for line in f:
column_2_value = float(line.split()[-2])
b_sum += column_2_value
IMO 更好的方法是将整个数据结构加载到内存中:
with open('Global_Temperature_Data_File.txt') as f:
data = [row.split() for row in f.read().split('\n')]
transposed_data = list(zip(*data))
这将transposed_data
变成一个嵌套的list
,其中每个内部元素代表一列。
然后你可以这样做:
b_sum = sum(transposed_data[2])
推荐阅读
- angularjs - 警告:尝试仅在网络服务器上多次加载 Angular
- sql - 如何在 PostgreSQL 中对包含星号的 VARCHAR 列进行排序
- sql - SQL - 基于动态日期范围的动态总和
- c# - 如何使用 SMO for .NET 恢复多个事务日志
- android - 使用 Android Studio 启动一个新的 Android 项目
- c# - Bot Framework V3 电子邮件 Json 对象
- python - python响应 - 并非所有请求都已执行
- php - 禁用自动购物车/checkout_update 添加手动选项以在下订单前进行更新
- python - 如何找到最新的照片并打开它 - Photo Booth
- unity3d - 如何在 github 上备份一个统一项目