在 Python 中,我有一个列表列表,如下所示:
[[1,2,3, 'L'], ['L'], [1]]
我想为每个子列表计算所有数字元素的平均值。因此应排除值“L”。上面例子的结果应该是:
[2, [], 1]
有什么快速的方法可以在一行中做到这一点?
谢谢。
请您参考如下方法:
为了获得您要求的准确结果,我会这样做:
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))
这不完全是单行的,而是一种非常可读的方式。
就我个人而言,如果列表中没有空值,我不会使用 [] 作为结果——None 似乎更合适。
