[英]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
使用列表中的內置sum
和len
函數:
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.