一行中两个列表中的整数之间的平均差异 - Python

时间:2018-04-06 10:34:30

标签: python

有两个非空列表,只包含整数,两个都有相同的长度。

我们的函数需要返回相同索引的整数之间的平均绝对差异 例如,对于列表[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)

感谢。

4 个答案:

答案 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)

使用列表中的内置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