Ric*_*son 1 python average list literals mean
在Python中,我有一个列表,如下所示:
[[1,2,3, 'L'], ['L'], [1]]
Run Code Online (Sandbox Code Playgroud)
我想为每个子列表计算所有数字元素的平均值.因此应排除值"L".以上示例的结果应该是:
[2, [], 1]
Run Code Online (Sandbox Code Playgroud)
有没有快速的方法在一行中这样做?
谢谢.
Sve*_*ach 11
为了得到你要求的确切结果,我会这样做:
from __future__ import division
import numbers
def average_over_numeric_values(a):
filtered = [x for x in a if isinstance(x, numbers.Number)]
if filtered:
return sum(filtered) / len(filtered)
return []
print(map(average_over_numeric_values, list_of_lists))
Run Code Online (Sandbox Code Playgroud)
这不是一个单行,而是一种非常易读的方式.
就个人而言,[]如果列表中没有空值,我就不会使用- None似乎更合适.
这是一个非常难以理解的单行,假设你已经导入numpy和numbers.没有数字元素的列表显示nan在结果列表中.
[numpy.mean([x for x in sublist if isinstance(x, numbers.Number)]) for sublist in mainlist]
Run Code Online (Sandbox Code Playgroud)