gpt4 book ai didi

python - 嵌套列表理解如何在 python 中工作?

转载 作者:行者123 更新时间:2023-11-28 22:47:38 25 4
gpt4 key购买 nike

我试图通过解构来理解列表理解。假设我有一个定义为列表列表的矩阵。 (是的,我知道 numpy 这不是以简单有效的方式执行此操作。这是关于理解。)和一个标量

A = [[1, 2, 3],
[2, 3, 6],
[3, 4, 12]]

s = 7

正如我在其他地方发现的那样,我可以定义一个列表理解来执行标量乘法。

def ScalarMult(A,s):
return [[s*i for i in row] for row in A]

As = ScalarMult(A,s)
print('As = ', As)

它返回

作为 = [[7, 14, 14], [14, 21, 42], [21, 28, 84]]

嵌套列表,这是我想要的,但它是如何工作的?

如果我写

def ScalarMult(A,s):
As = []
for row in A:
for i in row:
As.append(s*i)
return As

返回

作为 = [7, 14, 14, 14, 21, 42, 21, 28, 84]

扁平化的列表,这不是我想要的。我该怎么写

[[s*i for i in row] for row in A]

作为嵌套 for 循环并让它返回一个嵌套列表并清楚地看到它对这个 3X3 矩阵做了什么?当然,我想定义一个函数,例如适用于任何大小的矩阵的 ScalarMult。

最佳答案

可以这样写:

def ScalarMult(A,s):
As = []
for row in A:
Arow = []
for i in row:
Arow.append(s*i)
As.append(Arow)
return As

更进一步给出:

def ScalarMult(A,s):
As = []
for row in A:
As.append([s*i for i in row])
return As

进一步采取两步得到:

def ScalarMult(A,s):
As = [[s*i for i in row] for row in A]
return As

(即您开始的内容。)

希望这能让事情变得更清楚。

关于python - 嵌套列表理解如何在 python 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26062887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com