价值差异的功能

时间:2015-12-27 23:29:39

标签: python list python-2.7 python-3.x

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]

感谢。

5 个答案:

答案 0 :(得分:10)

假设您希望[3, 3, 3, 3]作为问题的答案,可以使用abszip

[abs(i-j) for i,j in zip(list1, list2)]

答案 1 :(得分:8)

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] 解决方案将更改为:

{{1}}

答案 2 :(得分:6)

你也可以在列表理解中做if else条件。

>>> [i-j if i>j else j-i for i,j in zip(list1, list2)]
[3, 3, 3, 3]

答案 3 :(得分:2)

您可以使用zip方法合并这两个列表。请参阅zip方法https://docs.python.org/2/library/functions.html#zip

的教程
>>> list1 = [1, 5, 3, 7]
>>> list2 = [4, 2, 6, 4]
>>> [abs(x-y) for x, y in zip(list1, list2)]
[3, 3, 3, 3]

答案 4 :(得分:1)

Avinash Raj的回答是正确的,或者使用map():

from operator import sub
C = map(sub, A, B)