我有一个包含大量数字的文件,我想尝试在python中将其读入列表列表。然后计算它的平均值或总和等等。
这是我的文本文件:
def ReadList(fileName):
with open(fileName, 'r') as numbers:
datalist = []
for line in numbers:
datalist.append(line.strip().split(' '))
return datalist
然后这是我的代码:
datalist.appent(int(line.strip().split(' ')))
但是我的结果变成了datalist = ['1,2,5349 .... 3450'],['10,95 ...,12']他们在beinning和end结束了,并且我无法用它计算平均值。我试过用:
已经datalist.append([int(x) for x in line.strip().split(',')])
,它不会将数据转换为数字,但会增加一些其他错误。
编辑:现在我将数据更改为numbers = ReadList('data.txt')
total = 0.0
for num in numbers:
total = total + num
return total/len(nums)
,数据似乎没问题。
但是当我的方法
时,我无法计算平均值"TypeError: unsupported operand type(s) for +: 'float' and 'list'"
仍会出现相同的错误:List# Mean
1 (Mean value of the first list( 1,2,5349,2398,19,3450))
2 (Mean value of the second list(10,95,201,5943,234,2319482,12))
我的目标是将它作为一个单独的列表列表并计算每个单独列表的方法,然后将其显示在一列中,例如:
{{1}}
答案 0 :(得分:0)
您需要在","
而不是" "
进行拆分,以便进行此更改
line.strip().split(',')
答案 1 :(得分:0)
您必须在此处执行两项操作,首先必须使用','
拆分列表,之后必须将字符串转换为int。
你可以使用:
datalist.append([ int(x) for x in line.strip().split(',') ])
此代码将拆分字符串,将字符串转换为int,然后追加到datalist变量。
编辑: 你有更新你的问题,所以这是我的答案的其余部分: 您计算平均值的块中有两个错误,第一个是您在列表列表中进行迭代,因此您必须通过两个itens,第二个是您使用了错误的值。你正在计算len的数量,你应该得到数字的len。这就是你的最终代码:
numbers = ReadList('data.txt')
means = []
for line in numbers:
total = 0.0
for num in line:
total = total + num
means.append(total/len(numbers))
return means