有两个非空列表,只包含整数,两个都有相同的长度。
我们的函数需要返回相同索引的整数之间的平均绝对差异
例如,对于列表[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)
感谢。
答案 0 :(得分:4)
在Python 3.4中,我们在标准库中获得了一些statistic functions,包括statistics.mean
。
使用此函数和generator-expression:
corner_fast
答案 1 :(得分:3)
a = [1, 2, 3, 4]
b = [1, 1, 1, 1]
sum([abs(i - j) for i, j in zip(a,b)]) / float(len(a))
答案 2 :(得分:2)
如果您乐意使用第三方库,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
答案 3 :(得分:0)
使用列表中的内置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