Python 矩阵表理解平均值

Python 矩阵表理解平均值,python,list,list-comprehension,Python,List,List Comprehension,这是前一个问题的一个分支,这个问题开始滚雪球了。如果我有一个矩阵a,我想使用每行[1:]值的平均值/平均值来创建另一个矩阵B,但保持行标题不变,我该如何做?我已经包括了矩阵A,我试图拼凑一个列表理解,以及预期的结果 from operator import sum,len # matrix A with row headings and values A = [('Apple',0.95,0.99,0.89,0.87,0.93), ('Bear',0.33,0.25.0.85,0.44,0.3

这是前一个问题的一个分支,这个问题开始滚雪球了。如果我有一个矩阵a,我想使用每行[1:]值的平均值/平均值来创建另一个矩阵B,但保持行标题不变,我该如何做?我已经包括了矩阵A,我试图拼凑一个列表理解,以及预期的结果

from operator import sum,len

# matrix A with row headings and values
A = [('Apple',0.95,0.99,0.89,0.87,0.93),
('Bear',0.33,0.25.0.85,0.44,0.33),
('Crab',0.55,0.55,0.10,0.43,0.22)]

#List Comprehension
B = [(A[0],sum,A[1:]/len,A[1:]) for A in A]
预期结果

B = [('Apple', 0.926), ('Bear', 0.44), ('Crab', 0.37)]

你的清单看起来有点奇怪。您正在对iterable和item使用相同的变量

这种方法似乎有效:

def average(lst):
    return sum(lst) / len(lst)

B = [(a[0], average(a[1:])) for a in A]

我为可读性创建了一个函数
average
。它符合您的期望值,因此我认为这就是您想要的,尽管您使用
mul
表明我可能遗漏了一些内容。

摘自@recursive和@Steven Rumbalski:

>>> def average(lst):
...     return sum(lst) / len(lst)
... 
>>> A = {
...     'Apple': (0.95, 0.99, 0.89, 0.87, 0.93),
...     'Bear': (0.33, 0.25, 0.85, 0.44, 0.33),
...     'Crab': (0.55, 0.55, 0.10, 0.43, 0.22),
... }
>>> 
>>> B = [{key: average(values)} for key, values in A.iteritems()]
>>> B
[{'Apple': 0.92599999999999993}, {'Bear': 0.44000000000000006}, {'Crab': 0.37}]

其中一件事情与其他事情不同。为什么这些数据不在字典里<代码>{'APPLE':(0.95,0.99,0.89,0.87,0.93),…}
(A[0],sum,A[1:]/len,A[1:])
应为
(A[0],sum(A[1:])/len
sum
len
是函数!难道没有办法简单地将平均函数嵌入理解代码本身而不担心定义吗?这似乎更简单。我使用mul是一个错误,我的意思是sum。我很欣赏你的解决方案,但我是一个简单的人。@Jeff:在列表理解中不包括
average()
计算是很简单的。@Jeff:我确实认为这更简单,因为它更容易理解,但我相信你能想出如何内联它。我想是这样。我对这一切还是新手。谢谢