Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.x改变'';转换为整数/浮点。从列表中计算平均值_Python_Python 3.x_Python 3.4_Python 3.5 - Fatal编程技术网

Python3.x改变'';转换为整数/浮点。从列表中计算平均值

Python3.x改变'';转换为整数/浮点。从列表中计算平均值,python,python-3.x,python-3.4,python-3.5,Python,Python 3.x,Python 3.4,Python 3.5,我正在尝试将列表中的“”更改为整数或浮点。假设我有一张清单 allprices = ['', '', '', 1.2, 3.2, 1.8, '', '', '', '', '', ''] 我想把空字符串改成浮点数或整数,我不确定这部分,但我很确定它们最后必须是浮点数,因为我要计算平均数。现在,我有另一份名单叫 averages = [] 列表“allprices”是基本上由子列表构成的元素列表。它有6个级别。我尝试将“”替换为0,但成功了。但是,我想不出一个方法,如何用命令进

我正在尝试将列表中的“”更改为整数或浮点。假设我有一张清单

    allprices = ['', '', '', 1.2, 3.2, 1.8, '', '', '', '', '', '']
我想把空字符串改成浮点数或整数,我不确定这部分,但我很确定它们最后必须是浮点数,因为我要计算平均数。现在,我有另一份名单叫

    averages = []
列表“allprices”是基本上由子列表构成的元素列表。它有6个级别。我尝试将“”替换为0,但成功了。但是,我想不出一个方法,如何用命令进行更改。我在这里或其他论坛上找到了一些示例和命令,但它们对我不起作用。我尝试的第一件事是

    var = ''
    var1= 0
    var = var1

但这会产生一些错误。我也试着直接把它做成一个浮动,但也没用。请帮助或指导我到另一个标题,这样我就可以找到它。顺便说一句,我是编程新手,所以我尝试做的事情看起来可能不是解决这个问题的方便方法,但只要它对我有效,我就很高兴。

在计算平均值时,只需在总和中忽略它们:

>>> allprices = ['', '', '', 1.2, 3.2, 1.8, '', '', '', '', '', '']
>>> sum(x for x in allprices if x)/len(allprices)
0.5166666666666667
注-这取决于
'
的“非真实性”。如果您的列表元素在其他方面是“真实的”(如
'
),但应进行筛选,请适当调整If子句:

>>> allprices = ['', '', '', 1.2, 3.2, 1.8, '', '', '', '', '', ' ']
>>> sum(x for x in allprices if isinstance(x, (float, int)))/len(allprices)
0.5166666666666667
如果您可能有非
int
float
的数字类,请使用抽象基类进行筛选:

>>> import numbers
>>> sum(x for x in allprices if isinstance(x, numbers.Number))/len(allprices)
0.5166666666666667

如果您想用
0
替换
,请使用列表:

>>> [e if e else 0 for e in allprices]
[0, 0, 0, 1.2, 3.2, 1.8, 0, 0, 0, 0, 0, 0]
或者


还有另一个带有
过滤器的解决方案

>>> sum(filter(None, allprices))/len(allprices)
0.5166666666666667

filter(None,…)
将删除所有错误的元素,例如空字符串或值0。后者很好,因为它在计算总和时不会产生影响。

在本文中“command”是什么意思?示例列表中有许多空字符串。您如何知道每个值使用哪个替换值?如果您只存储价格,那么如何将字符串和浮动组合在一起?好奇的是,也许在生成
allprices
的那一刻就可以解决。这些值从csv文件读取到列表中。这些价格是不同年份的每月水果价格。如果一个月内水果没有上市,它就没有价值。这就是它是如何由字符串和浮动组成的。谢谢你的回答,但我相信我没有说得很清楚,我没有试图计算“所有价格”的平均值。所有价格实际上是一个由购买子列表组成的列表。它有5个其他列表作为AllPrice的元素,这5个列表中每个都有12个项目。我将尝试发布我的代码,以便您可以看到我正在做什么。您的标题是
从列表中计算平均值
请澄清您正在尝试做什么…”“allprices”实际上是这样一个列表allprices=['','','','','','',1.0,2.0,1.2,1.3,1.1','','',['','',1.2,1.0,2.0,1.2,1.3,1.1,'','',['','','',1.2,1.8,1.3,1.1,'','','','','','','',1.0,2.0,1.1,1.2,1.2,1.4,1.8,1.9,2.2]]每个子列表有12项。我计算所有价格的平均值[1][3]。在每个列表中,我取第4个值,将它们相加,然后除以5。我相信这一点现在更清楚了。我已经涵盖了这一点。我只是尝试去除“”符号,以便在将结果添加到新列表中时进行平均计算。
>>> sum(filter(None, allprices))/len(allprices)
0.5166666666666667