m是2D矩阵,类似于:
[[1,2,3],[3,4,5],[6,7,1]]
print([i*5 for i in [j for j in m]])
不起作用。每行重复5个项目。我希望每个项目都乘以标量5。
不想使用numpy。如何使用列表推导解决此问题?谢谢!
答案 0 :(得分:1)
Python列表总是 一维。您的“矩阵”只是三个列表的列表,而不是2D列表。因此,您的外部列表理解需要生成列表作为其元素。
[[i*5 for i in row] for row in m]
将列表理解理解为与累加器循环有关,即
output = []
for row in m:
output.append([i*5 for i in row])
答案 1 :(得分:1)
a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
输出:
[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
答案 2 :(得分:1)
我看到您需要列表理解,但是只是为了显示带有numpy
的选项:
import numpy as np
v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)
print(vv*5)
# [[ 5 10 15]
# [15 20 25]
# [30 35 5]]