然后使用Python对字符串中的平均值求和

然后使用Python对字符串中的平均值求和,python,arrays,json,python-2.7,multidimensional-array,Python,Arrays,Json,Python 2.7,Multidimensional Array,如果给我一个json.dumps(当关注响应的特定方面时,会给出如下响应的输出): [["player1-game1", 2,2,4,5],["player1-game2",6,8,8,9]] 我想让它输出的平均球员一给定2或无限数的游戏 我必须使用什么代码来获取该字符串中这些值的平均值: 我希望它打印出[1]、[2]、…中元素的平均值,但不打印[0],因为它是一个字符串 我如何使用Python2.7做到这一点;我尝试使用for循环的组合,甚至尝试为数组设置一些值,以防我有数千名玩家或统计数据

如果给我一个json.dumps(当关注响应的特定方面时,会给出如下响应的输出):

[["player1-game1", 2,2,4,5],["player1-game2",6,8,8,9]]
我想让它输出的平均球员一给定2或无限数的游戏

我必须使用什么代码来获取该字符串中这些值的平均值:

我希望它打印出[1]、[2]、…中元素的平均值,但不打印[0],因为它是一个字符串

我如何使用Python2.7做到这一点;我尝试使用for循环的组合,甚至尝试为数组设置一些值,以防我有数千名玩家或统计数据

我希望得到的结果是:

[player-1, 4,5,6,7]
所以[1,…]是[“玩家-1”,(2+6)/2,(8+2)/2,(4+8)/2,(9+5)/2]的平均值


对不起,我应该澄清一下。

一种方法是对每个列表进行切片,以便始终将第一个元素单独处理,将其余元素作为另一个列表。一旦这样做,您就可以轻松提取其平均值。例如,使用列表理解:

orig =  [["player1-game1", 2,2,4,5], ["player1-game2",6,8,8,9]]
result = [ [x[0], float(sum(x[1:]))/len(x[1:])] for x in orig]

您可以使用带有内部gex exp的列表comp,这样您只需对每个子列表进行一次切片,您可以将
0.0
作为起始值传递给
sum
,这样您就不需要为除法强制转换为float

l = [["player1-game1", 2,2,4,5],["player1-game2",6,8,8,9]]

res = [[_nm, sum(_sub, 0.0) / len(_sub)] for _nm, _sub in ((sub[0],sub[1:]) for sub in l)]
输出:

[['player1-game1', 3.25], ['player1-game2', 7.75]]
如果您实际上试图从每个子列表中获得成对元素的平均值,则可以转置这些元素:

from itertools import izip
l = [["player1-game1", 2,2,4, 5],["player1-game2",6,8,8,9]]
zipped = izip(*l)
player = next(zipped)
print([(a+b( / 2.0 for a,b in zipped])
[4.0, 5.0, 6.0, 7.0]
如果要将播放机添加到列表中:

 [player[0]]+[(a+b) / 2.0 for a,b in zipped]

你可能会发现字典是一种更方便的数据结构。

为什么不
result=[[x[0],float(sum(x[1:])/len(x[1:])]for x in orig]
?@Sait good point,fixed。我想旧的(读:坏)习惯很难改变。所以我可以使用print.json.dumps(数组[n][24])打印这些统计数据的总和/平均值,但我不想有16个不同的变量,我已经设置为零,然后16个不同的行打印数组中不同元素的稍有不同的统计数据。我只想让它可以打印无限数量的统计数据/无限数量游戏的平均值。顺便说一句,有一个输入错误:
oring
。因为它是太棒了,在Python3中(肯定是3.5,我想在前面),您可以使用解包来为您进行拆分;如果
orig
是原始列表:
[(k,sum(scores)/len(scores)),k,*orig中的scores]
。解包的一般化非常棒:-[“玩家1-game1”,“日期”,“赢/输”,“y”,“n”,“1,2,3,4”,“玩家1-game2”,“日期”,“赢/输”,“y”,“n”,1,2,3,4]]我会做以下几件事:结果=[[x[0:5],浮点(和(x[6:])/len(x[6:])对于原始中的x]我试图打印第一个列表和第二个列表中第一个元素的平均值。例如:如果是这样的话,我会得到[player-1,4,5,6,7]