刚刚开始python,这本书告诉我,如果我使用下面的代码,我可以创建一个矩阵对角线,有人请解释它是什么意思?对于我在,矩阵[我] [我],为什么它是[0,1,2] 在此先感谢。请给我一个解释这是什么意思(基本)
Matrix = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12]]
Diagonal = [Matrix[i][i] for i in [0, 1, 2]]
刚刚开始python,这本书告诉我,如果我使用下面的代码,我可以创建一个矩阵对角线,有人请解释它是什么意思?对于我在,矩阵[我] [我],为什么它是[0,1,2] 在此先感谢。请给我一个解释这是什么意思(基本)
Matrix = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12]]
Diagonal = [Matrix[i][i] for i in [0, 1, 2]]
第一分配
Matrix = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12]]
在可变Matrix
设置为3的列表元素,其中3个元素中的每一个都是4个数字的列表。 Matrix[0]
保存列表[1,2,3,4]
,Matrix[1]
保存[5,6,7,8]
和Matrix[2]
保存[9,10,11,12]
。
第二分配:
Diagonal = [Matrix[i][i] for i in [0, 1, 2]]
在可变Diagonal
设置为特定号码的列表内Matrix
。 Diagonal
中的每个项目来自Matrix
中的位置,其中行索引和列索引相同(因为两个索引都使用i
)。 i
本身正在运行值0,1,2,因此Diagonal
以[Matrix[0][0], Matrix[1][1], Matrix[2][2]
结尾,即[1, 6, 11]
。 0
是第一行和第一列的索引,1
是第二行和第二列的索引,2
是第三行和第三列的索引。
[0, 1, 2]
被用作索引列表。
为基质是你的行和列,以多维数组:
您在第一次循环得到row 0 column 0
-> [1,2,3,4] = 1
你在第二次迭代得到row 1 column 1
-> [5,6,7,8] = 6
您在得到row 2 column 2
第三次迭代-> [9,10,11,12] = 1
[Matrix[i][i] for i in [0, 1, 2]]
被称为“list comprehen sion“这真棒,你应该尽快学会。 (它对列表中的每个项目执行一些操作,然后将结果作为列表返回)
总体上它表示for i
- “i”是我们用作临时持有者的变量。
in [0,1,2]
- 这些是 “我” 会在每次迭代
Matrix[i][i]
时间是 - 每次访问矩阵[I] [i]和它一巴掌到一个列表。
该列表被分配给Diagonal
而不列表理解它等同于这样的:
Diagonal = []
for i in [0,1,2]:
Diagonal.append(Matrix[i][i])
How是你的'for循环'相当于'list comp'吗?它会给出一个完全不同的结果 – 2014-10-02 22:58:11
布拉赫,你知道我的意思是[我] [我] :) – TehTris 2014-10-02 23:12:42
你正在使用哪个教程来学习Python?我们也许可以在适当的部分指出你的意思。 – 2014-10-02 22:32:30
无论你正在使用哪个教程,都可能有Python数据结构的细分,以及它们的含义以及如何使用它们等。了解这一点,将有助于你理解这一点以及为什么你会得到以下输出:[1,6,11] – Karl 2014-10-02 22:37:17