首页 > 解决方案 > 循环遍历二维数组 Python

问题描述

我对某些事情有点困惑,当我想出这段代码时,我正在循环一个二维数组,只是在试验:

result = [["Lucas","5"],["Tim","2"]]
count = 0
for line in result:
    for item in result[count]:
        print(item)
        count = count + 1

我认为这会做的是给我一个结果,Lucas然后2,因为它会转到第一项,然后第二个for循环将通过子列表打印result[0][0],但是一旦它到达子列表的第一项,它会将计数增加到 1,这意味着它将result[1][1]在下一个打印,因为它在一个新的范围内,但是循环随后将转到它所在范围的第二项。

但是,这将给出 'Lucas','5' 作为输出。我想当我改变计数时,我认为我正在改变它循环的范围。

请向我解释为什么我错了

提前感谢您,并很抱歉没有很好地解释这一点。

标签: pythonarrayspython-3.xmultidimensional-array

解决方案


当你这样做

for item in result[count]:

该表达式result[count]仅在循环开始时计算一次。每次循环都不会对其进行评估,因此重新分配count对后续迭代没有影响。它大致相当于:

temp = result[count]
for item in temp:

请记住,您循环使用的值for可能是生成器表达式。这些不能被索引,它们只是计算一系列值。因此,每次都重新评估它们是没有意义的。


推荐阅读