我想编写Python代码来解决下面提到的问题。
我有一份清单清单:
A = [[10, 20, 30], [15, 30, 25], [12, 30, 6]]
我有一个数字列表:
B = [2, 5, 6]
我想迭代列表B并按B中的元素划分列表A的每一行。 例如:
[10, 20, 30] / B[1]
[15, 30, 25] / B[2]
[12, 30, 6] / B[3]
并获得如下输出:
output = [[5, 10, 15], [3, 6, 5], [2, 5, 1]]
我不知道使用for循环是否是一个好主意,或不这样做?因为我无法得到正确的结果。
有任何想法找出解决方案吗?
答案 0 :(得分:1)
在Numpy中你可以这样做:
A/B[:, None]
演示:
In [60]: A
Out[60]:
array([[10, 20, 30],
[15, 30, 25],
[12, 30, 6]])
In [61]: B
Out[61]: array([2, 5, 6])
In [63]: A/B[:, None]
Out[63]:
array([[ 5., 10., 15.],
[ 3., 6., 5.],
[ 2., 5., 1.]])
答案 1 :(得分:0)
您可以使用简单的嵌套列表理解:
>>> A = [[10, 20, 30], [15, 30, 25], [12, 30, 6]]
>>> B = [2, 5, 6]
>>> [[e / b for e in a] for a,b in zip(A,B)]
[[5.0, 10.0, 15.0], [3.0, 6.0, 5.0], [2.0, 5.0, 1.0]]
>>>