TypeError:不支持+的操作数类型:“int”和“str”似乎无法转换lis

2024-09-27 07:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我写了一个函数,它读取一个文件(csv)并以列表的形式返回每行数字的平均值。 我相信代码应该可以工作,但是我已经尝试了很多方法,无法从列表中获取数据转换为数值(然后可以求和等)。在

def line_averages(filename):
    file = open(filename, 'r')
    data = file.readlines()
    file.close()
    x = []
    for i in data:
        data_splitted = i.split()
        line_average = sum(data_splitted) / len(data_splitted)
        x.append(line_average)
    return x

特别是当我用我的文件运行这个文件时,我得到:

^{pr2}$

抱歉,如果一个简单的解决办法,因为我是新来的这个lol


Tags: 文件csv方法函数代码列表dataline
3条回答

读入字符串数据,将其拆分为子字符串,然后尝试对字符串求和。您必须先将输入转换为数字类型,然后才能添加它们。在

所以,它看起来是真实的你已经意识到你的错误来源是你的list包含字符串而不是数字数据类型,这就是加法不能工作的原因。这样做的天真方法(我可以补充一点,这是一个非常合理的方法),就是简单地循环:

>>> total = 0
>>> for x in split:
...     total += float(x)
...
>>> total
17.0

好的,我们没有使用sum函数。是否也可以做类似的事情:

^{pr2}$

这也很好,不过,它创建了一个不必要的中间列表。但是请注意上面两个循环的模式:您将同一个函数反复应用于列表中的每个元素,即将函数映射到列表中的。好吧,Python包括电池:

>>> sum(map(float, split))
17.0

注意,在Python3上,上面的解决方案不会创建不必要的中间列表!在

文件中的数据是如何排列的?我认为您应该在split函数中使用分隔符作为参数。例如,如果文件包含以下行:

1,2,3,4...

必须使用i.split(“,”)。 当数据被正确分割时,你可以使用numpy和类似的符号来轻松计算平均值 line_average = np.mean([float(a) for a in data_splitted]) 你必须把

import numpy as np 

在你开始工作的时候。在

相关问题 更多 >

    热门问题