在python中列出减法

时间:2017-03-16 08:18:12

标签: python list

假设我有两个不同长度的列表。

a = [8,9,4,7,5,6,1,4,8]
b = [6,4,7,1,5,8,3,6,4,4]

我想要一个这样的列表:

c= a-b

#output = [2, 5, -3, 6, 0, -2, -2, -2, 4]

我怎样才能实现这个目标?

我尝试使用地图功能operator.sub。但由于列表长度不同,我收到错误。

c = map(operator.sub, a, b)
  

TypeError:不支持的操作数类型 - :'NoneType'和'int'

2 个答案:

答案 0 :(得分:7)

您可以将zip列表理解表达式一起使用:

>>> a = [8,9,4,7,5,6,1,4,8]
>>> b = [6,4,7,1,5,8,3,6,4,4]

>>> [x - y for x, y in zip(a, b)]
[2, 5, -3, 6, 0, -2, -2, -2, 4]

答案 1 :(得分:4)

from itertools import starmap
from operator import sub

a = [8,9,4,7,5,6,1,4,8]
b = [6,4,7,1,5,8,3,6,4,4]

output = list(starmap(sub, zip(a, b)))

如果您不想使用列表理解,可以使用itertools.starmap完成此操作。

您也可以使用地图,但我认为starmap是更好的选择。使用map,您可以使用嵌套的zip来缩短较长的参数。

output = map(sub, *zip(*zip(a, b)))
print(list(output))
# [2, 5, -3, 6, 0, -2, -2, -2, 4]