Python 从一个列表中减去另一个列表

Python 从一个列表中减去另一个列表,python,list,Python,List,我想从另一个列表的对应元素中减去一个列表,例如: a = [[1, 2], [3, 4]] b = [[1, 2], [3, 0]] 预计产量为: c = [[0, 0], [0, 4]] 仅使用一个列表从另一个列表中进行减法很容易: c = [i - j for i, j in zip(a, b)] 但这不适用于列表列表并返回TypeError:不支持的操作数类型-:“list”和“list”。有什么办法吗?使用numpy数组 >>> import numpy as n

我想从另一个列表的对应元素中减去一个列表,例如:

a = [[1, 2], [3, 4]]
b = [[1, 2], [3, 0]]
预计产量为:

c = [[0, 0], [0, 4]]
仅使用一个列表从另一个列表中进行减法很容易:

c = [i - j for i, j in zip(a, b)]
但这不适用于列表列表并返回
TypeError:不支持的操作数类型-:“list”和“list”
。有什么办法吗?

使用numpy数组

>>> import numpy as np
>>> a=np.array([[1,2],[3,4]])
>>> b=np.array([[1,2],[3,0]])
>>> a-b
array([[0, 0],
       [0, 4]])

这应该可以做到:

c = [list(map(lambda x, y: x - y, ii, jj)) for ii, jj in zip(a, b)]

您可以使用嵌套列表理解,其中内部列表对每对列表执行减法:

a = [[1, 2], [3, 4]]
b = [[1, 2], [3, 0]]
c = [[ii - jj for ii, jj in zip(i, j)] 
     for i, j in zip(a, b)]
print(c)
#  [[0, 0], [0, 4]]

您是否尝试过嵌套循环来提取项目并生成结果?很酷,很高兴这能有所帮助。尽管下面基于
numpy
的解决方案运行良好,但它仍然需要导入一个外部模块并从
numpy.array
转换到
list
,即使是隐式的。