循环遍历二维数组 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' 作为输出。我想当我改变计数时,我认为我正在改变它循环的范围。


请向我解释为什么我错了


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


繁花如伊
浏览 588回答 3
3回答

一只斗牛犬

当你这样做for item in result[count]:该表达式result[count]仅在循环开始时计算一次。每次循环都不会对其进行评估,因此重新分配count对后续迭代没有影响。它大致相当于:temp = result[count] for item in temp:请记住,您循环使用的值for可能是生成器表达式。这些不能被索引,它们只是计算一系列值。因此,每次都重新评估它们是没有意义的。

绝地无双

for line in result:将循环遍历顶层数组,因此这里有 2 条记录:["Lucas","5"]然后["Tim","2"]:for item in result[count]:将循环遍历 2 条记录中的每条记录的每个项目,所以print(item)将按顺序显示 4 个项目Lucas, 5, Tim, 2。不需要计数,它在这里没有任何用途,并且无论如何都不被任何一个 for 循环使用。

猛跑小猪

如果你坚持使用 for 循环,你也可以使用result = [["Lucas","5"],["Tim","2"]]count = 0for line in range(len(result)):    for item in result[line]:        print(item)        count = count + 1返回:卢卡斯 5 蒂姆 2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go