你如何从Python中的列表b中减去列表a?

时间:2015-01-24 11:16:55

标签: python list

所以我有2个列表,比如列表a和列表b其中

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

如何从b中减去a的内容?

3 个答案:

答案 0 :(得分:2)

您可以zip两个列表并减去子元素以创建新列表:

zip(b,a) -> [(1, 9), (2, 8), (3, 7), (4, 6)]

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

print([y-x for x,y in zip(b,a)])
[8, 6, 4, 2]

如果您想更改a本身,请使用enumerate减去公共索引处的元素:

for ind,ele in enumerate(a):
    a[ind] -= b[ind]
print(a)
[8, 6, 4, 2]

或使用numpy:

将numpy导入为np

a = np.array([9, 8, 7, 6])
b = np.array([1, 2, 3, 4])

print(a - b)
[8 6 4 2]

答案 1 :(得分:2)

您可以使用map函数及其功能来支持多个iterable(以下假定为Python2):

>>> a = [9, 8, 7, 6]
>>> b = [1, 2, 3, 4]
>>> map(lambda x,y: x-y, a, b)
[8, 6, 4, 2]

map将第一个参数(必须是函数)应用于以下参数的所有元素。例如:

>>> from math import sqrt
>>> map(sqrt, [1,2,9])
[1.0, 1.4142135623730951, 3.0]

如果使用两个以上的参数,第一个参数中的函数必须使用更多参数,因为它是使用每个列表中的元素调用的:

>>> from math import pow
>>> map(pow, [2,3,4], [2,3,4])
[4.0, 27.0, 256.0]

结果是2 ^ 2,3 ^ 3和4 ^ 4.

我的示例中的lambda只是定义减法函数的一种较短方式,以下代码也会这样做:

def sub(x,y):
  return x-y

map(sub, a, b)

答案 2 :(得分:0)

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

t=0
h=[]

lenA=len(a)

while lenA != t:
    x=a[t]-b[t]
    t=t+1
    h.append(x)