如果我有一個(gè)列表,請(qǐng)說:foo = [[4, 6, 2, 7], [1.2, 8.3, 9, 16]]我可以得到每個(gè)元素的平均值,如下所示:[(a + b) / 2 for a, b in zip(foo[0], foo[1])]要么import statistics
[statistics.mean(i) for i in zip(foo[0], foo[1])]我怎樣才能對(duì)任意數(shù)量的嵌套列表做同樣的事情foo?我嘗試了幾件事,但它們不起作用,例如:[statistics.mean(i) for i in zip(list(foo))]我強(qiáng)烈希望只使用理解。
3 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
下面的代碼應(yīng)該做的工作:
[sum(i)/len(i) for i in zip(*foo)]

30秒到達(dá)戰(zhàn)場(chǎng)
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您不想使用任何包:
[statistics.mean([foo[j][i] for j in range(len(foo))]) for i in range(len(foo[0]))]
有了numpy它就會(huì)
import numpy as np
arr = np.array(foo)
means = np.mean(arr,axis=0)
編輯
沒有任何包裹:
[sum([foo[j][i] for j in range(len(foo))])/len(foo) for i in range(len(foo[0]))]

料青山看我應(yīng)如是
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
試試這個(gè):
import statistics
foo = [[4, 6, 2, 7], [1.2, 8.3, 9, 16]]
x = [statistics.mean(i) for i in zip(*foo)]
print(x)
添加回答
舉報(bào)
0/150
提交
取消