Python中是否有一个函数来获取列表中两个或多个值之间的差异?那么,在这两个列表中:
list1 = [1, 5, 3, 7] list2 = [4, 2, 6, 4]
我需要计算list1和list2中每个值之间的差异.
for i in list1: for ii in list2: print i -ii
这给出了负值,但我希望两个列表的值之间的减法仅从最高值到最低值,以便不获得负值.
对于上面的列表,我希望输出为[3, 3, 3, 3]
.
谢谢.
假设您希望[3, 3, 3, 3]
作为问题的答案,您可以使用abs
和zip
:
[abs(i-j) for i,j in zip(list1, list2)]
无论zip
是列表,还是使用numpy
:
>>> list1 = [1, 5, 3, 7] >>> list2 = [4, 2, 6, 4] >>> [a-b for a,b in zip(list1, list2)] [-3, 3, -3, 3] >>> import numpy as np >>> np.array(list1) - np.array(list2) array([-3, 3, -3, 3])
请记住根据需要将数组转换回列表.
编辑:为了满足需要绝对值的新要求:您可以添加abs
列表理解:
>>> [abs(a-b) for a,b in zip(list1, list2)] [3, 3, 3, 3]
并且numpy
解决方案将变为:
>>> map(abs, np.array(list1) - np.array(list2)) [3, 3, 3, 3]
你也可以在列表理解中做if else条件.
>>> [i-j if i>j else j-i for i,j in zip(list1, list2)] [3, 3, 3, 3]