如何在Python中用数学方法减去两个列表?

5 投票
3 回答
47080 浏览
提问于 2025-04-18 03:24

我知道在Python中不支持直接对列表进行减法操作,不过有一些方法可以去掉两个列表中相同的元素。但我想做的是,把一个列表中的每个元素分别减去另一个列表中对应位置的元素,然后把结果作为一个新的列表返回。请问我该怎么做呢?

     A = [3, 4, 6, 7]
     B = [1, 3, 6, 3]
     print A - B  #Should print [2, 1, 0, 4]

3 个回答

0

试试下面的这个方法

def substract_lists(a, b):
    for i, val in enumerate(a):
            val = val - b[i]
    return a
13

你可以使用 zip 函数和一个 列表推导式 来实现这个功能:

>>> A = [3, 4, 6, 7]
>>> B = [1, 3, 6, 3]
>>> zip(A, B) # Just to demonstrate
[(3, 1), (4, 3), (6, 6), (7, 3)]
>>> [x - y for x, y in zip(A, B)]
[2, 1, 0, 4]
>>>
23

使用 operatormap 模块:

>>> A = [3, 4, 6, 7]
>>> B = [1, 3, 6, 3]
>>> map(operator.sub, A, B)
[2, 1, 0, 4]

正如 @SethMMorton 在下面提到的,在 Python 3 中,你需要使用这个:

>>> A = [3, 4, 6, 7]
>>> B = [1, 3, 6, 3]
>>> list(map(operator.sub, A, B))
[2, 1, 0, 4]

因为在 Python 中,map 返回的是一个迭代器。

撰写回答