关于列表和循环的Python概念

关于列表和循环的Python概念,python,Python,我不明白为什么这个函数会这样工作 a = [[0, 1, 2], [2, 3, 4], [4, 5, 6]] for i in range(len(a)): for j in range(len(a)): if i == j: print(a[i][j]) 此函数的输出为: 0 3 6 由于print语句仅在i==j时发生,因此我们可以将此代码简化为单个循环: 对于我在兰格莱纳: printa[i][i] 然后很清楚发生了什

我不明白为什么这个函数会这样工作

a = [[0, 1, 2],
     [2, 3, 4],
     [4, 5, 6]]
for i in range(len(a)):
    for j in range(len(a)):
        if i == j:
            print(a[i][j])
此函数的输出为:

0
3
6

由于print语句仅在i==j时发生,因此我们可以将此代码简化为单个循环:

对于我在兰格莱纳: printa[i][i] 然后很清楚发生了什么:它从对角线打印元素,其中x和y坐标相同。

它将i从0循环到2。对于每个i,它也将j从0循环到2。然后将它们进行比较,如果i和j的值相同,则只打印出a[i][j]处的项目。所以循环是这样的:

i=0; j=0. Does i==j? Yes. Print a[0][0], which is 0.
i=0; j=1. Does i==j? No.  Do not print anything.
i=0; j=2. Does i==j? No.  Do not print anything.
i=1; j=0. Does i==j? No.  Do not print anything.
i=1; j=1. Does i==j? Yes. Print a[1][1], which is 3.
i=1; j=2. Does i==j? No.  Do not print anything.
i=2; j=0. Does i==j? No.  Do not print anything.
i=2; j=1. Does i==j? No.  Do not print anything.
i=2; j=2. Does i==j? Yes. Print a[2][2], which is 6. 
这基本上是一种冗长的写作方式

for i in range(len(a)):
  print(a[i][i])

到底是什么让你困惑?你了解哪些部分?您是否期望不同的输出?如果是,是什么?另外请注意,代码应该以文本的形式发布,而不是截图。我试着以文本的形式发布,但它就是不让我这么做。也许是我的错对不起,我对这一点很陌生,我只是在学习。如果你在每次迭代中打印出I和j的值,它可能会帮助你理解。哦,我现在看到了!非常感谢,这真的很有帮助!我喜欢这个答案。