当前位置:  开发笔记 > 编程语言 > 正文

价值差异的功能

如何解决《价值差异的功能》经验,为你挑选了3个好方法。

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].

谢谢.



1> erip..:

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

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



2> timgeb..:

无论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]


@timgeb,我编辑了它,怎么样:[ab for a,b in zip(list1,list2)if a b else ba]

3> Avinash Raj..:

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

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


这与`[abs(ij)for i,j in zip(list1,list2)]`相同
推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有