我的列表如下:
A=[[1,2,3],[4,5,6],[7,8,9]]
现在我想用B减去A中的所有列表
B=[1,1,1]
获得以下结果C:
C=[[0,1,2],[3,4,5],[6,7,8]]
我知道我可以使用zip进行两个列表减法,但是我不能在列表中的列表上直接使用它。我该如何减去?谢谢
答案 0 :(得分:3)
在zip
中使用列表理解:
C = [[a-b for a, b in zip(sublist, B)] for sublist in A]
或者,将列表理解与enumerate
一起使用:
C = [[j-B[i] for i, j in enumerate(sublist)] for sublist in A]
使用第三方库NumPy,您可以利用广播来输出数组:
import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = np.array([1,1,1])
C = A - B
print(C)
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
答案 1 :(得分:2)
使用numpy
。
演示:
import numpy as np
A=[[1,2,3],[4,5,6],[7,8,9]]
B=[1,1,1]
C = [list(np.array(i) - np.array(B)) for i in A]
print(C)
使用operator.sub
from operator import sub
A=[[1,2,3],[4,5,6],[7,8,9]]
B=[1,1,1]
C = [list(map(sub, i, B)) for i in A]
print(C)
输出:
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
答案 2 :(得分:0)
import operator
A=[[1,2,3],[4,5,6],[7,8,9]]B=[1,1,1]
B=[1,1,1]
C=[list(map(operator.sub, i,B)) for i in A]
print C
答案 3 :(得分:0)
这是不使用NUMPY的另一种方法-
for innerList in A:
newInner = []
for j in range(0, len(innerList)):
newInner.append(innerList[j] - B[j])
C.append(newInner)