簡體   English   中英

一行中兩個列表中的整數之間的平均差-Python

[英]Average difference between ints in two lists in one line - Python

有兩個非空列表,僅包含整數,它們的長度相同。

我們的函數需要返回相同索引的int之間的平均絕對差。
例如,對於列表[1, 2, 3, 4][1, 1, 1, 1] ,答案將是1.5
該功能需要一行完成。

我有一些方法可以做到這一點,但是您可能會猜到,這不是一成不變的:

def avg_diff(a, b):
    sd = 0.0
    for x, y in zip(a, b):
        sd += abs(x - y)
    return sd / len(a)

謝謝。

在Python 3.4中,我們在標准庫中提供了一些統計功能 ,包括statistics.mean

使用此函數和generator-expression:

from statistics import mean

a = [1, 2, 3, 4]
b =  [1, 1, 1, 1]

mean(abs(x - y) for x, y in zip(a, b))
# 1.5
a = [1, 2, 3, 4]
b = [1, 1, 1, 1]

sum([abs(i - j) for i, j in zip(a,b)]) / float(len(a))

如果您樂於使用第三方庫, numpy提供了一種方法:

import numpy as np

A = np.array([1, 2, 3, 4])
B = np.array([1, 1, 1, 1])

res = np.mean(np.abs(A - B))
# 1.5

使用列表中的內置sumlen函數:

lst1 = [1, 2, 3, 4]
lst2 = [1, 1, 1, 1]
diff = [abs(x-y) for x, y in zip(lst1, lst2)]  # find index-wise differences
print(sum(diff)/len(diff))    # divide sum of differences by total
# 1.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM