将2D列表中的每个项目乘以python中的标量

时间:2019-01-23 02:41:43

标签: python list list-comprehension

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。如何使用列表推导解决此问题?谢谢!

3 个答案:

答案 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]]