Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 价差函数_Python_List_Python 2.7_Python 3.x - Fatal编程技术网

Python 价差函数

Python 价差函数,python,list,python-2.7,python-3.x,Python,List,Python 2.7,Python 3.x,Python中是否有函数可以获取列表中两个或多个值之间的差异?因此,在这两个列表中: list1 = [1, 5, 3, 7] list2 = [4, 2, 6, 4] 我需要计算列表1和列表2中每个值之间的差值 for i in list1: for ii in list2: print i -ii 这将给出负值,但我希望两个列表的值之间的减法仅从最高值到最低值,以避免得到负值 对于上面的列表,我希望输出是[3,3,3,3] 谢谢。或者使用zip列表,或者使用nump

Python中是否有函数可以获取列表中两个或多个值之间的差异?因此,在这两个列表中:

list1 = [1, 5, 3, 7]
list2 = [4, 2, 6, 4]
我需要计算列表1和列表2中每个值之间的差值

for i in list1:
    for ii in list2:
       print i -ii
这将给出负值,但我希望两个列表的值之间的减法仅从最高值到最低值,以避免得到负值

对于上面的列表,我希望输出是
[3,3,3,3]


谢谢。

或者使用
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]

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

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

您可以使用zip方法来组合这两个列表。请参阅zip方法的教程


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


显示您的尝试以及预期输出…您是否预期
[3,3,3,3]
?取决于提问者的要求。。。这个答案看起来不错。我很确定这就是我们要的。。。否则,我要求@gho澄清;)@timgeb,我编辑了它,这是怎么回事:[a-b代表a,b在zip(列表1,列表2)中,如果a>b,则b-a]这与
[abs(I-j)代表zip中的I,j(列表1,列表2)]
这是不正确的。OP只需要数组中的正元素。这与已经提供的几个答案没有什么不同。
>>> list1 = [1, 5, 3, 7]
>>> list2 = [4, 2, 6, 4]
>>> [abs(x-y) for x, y in zip(list1, list2)]
[3, 3, 3, 3]
from operator import sub
C = map(sub, A, B)