2014-10-02 65 views
-5

刚刚开始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]] 
+2

你正在使用哪个教程来学习Python?我们也许可以在适当的部分指出你的意思。 – 2014-10-02 22:32:30

+1

无论你正在使用哪个教程,都可能有Python数据结构的细分,以及它们的含义以及如何使用它们等。了解这一点,将有助于你理解这一点以及为什么你会得到以下输出:[1,6,11] – Karl 2014-10-02 22:37:17

回答

0

第一分配

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设置为特定号码的列表内MatrixDiagonal中的每个项目来自Matrix中的位置,其中行索引和列索引相同(因为两个索引都使用i)。 i本身正在运行值0,1,2,因此Diagonal[Matrix[0][0], Matrix[1][1], Matrix[2][2]结尾,即[1, 6, 11]0是第一行和第一列的索引,1是第二行和第二列的索引,2是第三行和第三列的索引。

-1

[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

0

[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]) 
+0

How是你的'for循环'相当于'list comp'吗?它会给出一个完全不同的结果 – 2014-10-02 22:58:11

+0

布拉赫,你知道我的意思是[我] [我] :) – TehTris 2014-10-02 23:12:42