【发布时间】:2014-08-13 13:30:41
【问题描述】:
import csv
csvfile = open(r"C:\Users\Administrator\Downloads\canberra_2011_2012.csv")
header = csvfile.readline()
csv_f = csv.reader(csvfile)
for row in csv_f:
first_value = float(row[5])
total = sum(first_value)
length = len(first_value)
average = total/length
print("average = ",average)
当我运行这段代码时,它说
TypeError: 'float' object is not iterable
但是当我将第 7 行更改为
first_value = [float(row[5]) for row in csv_f
然后就可以了。这让我很困惑,有人可以帮助我吗?
【问题讨论】:
-
这是什么编程语言?
-
您希望
sum(first_value)产生什么?实际上,您正在尝试将在每行的第 6 列中找到的单个值单独相加。缩进的代码为电子表格中的每一行单独运行一次。 -
这是python,我该如何解决?
-
您的列表理解已经修复了它,不是吗?您的
sum和len都假定first_value是一个值列表,而不是单个值。让它实际上是一个值列表(可能有一个更好的名字)修复它。 -
如果我使用 first_value = [float(row[5]) for row in csv_f],它确实修复了它。但是求平均值只是任务一,在任务二中,它要求我找到 2011 年和 2012 年的平均值。这个文件的第三列是年份,所以我打算测试第 3 列中的值何时等于2011,然后输出第6列的值,但是输出的是“[]”,没有任何值