我对某些事情有点困惑,当我想出这段代码时,我正在循环一个二维数组,只是在试验:result = [["Lucas","5"],["Tim","2"]]count = 0for 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' 作为输出。我想当我改变计数时,我认为我正在改变它循环的范围。请向我解释为什么我错了提前感谢您,并很抱歉没有很好地解释这一点。
3 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
当你这样做
for item in result[count]:
该表达式result[count]仅在循环开始时计算一次。每次循环都不会对其进行评估,因此重新分配count对后续迭代没有影响。它大致相当于:
temp = result[count] for item in temp:
请记住,您循环使用的值for可能是生成器表达式。这些不能被索引,它们只是计算一系列值。因此,每次都重新评估它们是没有意义的。
绝地无双
TA贡献1946条经验 获得超4个赞
for line in result:
将循环遍历顶层数组,因此这里有 2 条记录:["Lucas","5"]然后["Tim","2"]:
for item in result[count]:
将循环遍历 2 条记录中的每条记录的每个项目,所以
print(item)
将按顺序显示 4 个项目Lucas, 5, Tim, 2。
不需要计数,它在这里没有任何用途,并且无论如何都不被任何一个 for 循环使用。
猛跑小猪
TA贡献1858条经验 获得超8个赞
如果你坚持使用 for 循环,你也可以使用
result = [["Lucas","5"],["Tim","2"]]
count = 0
for line in range(len(result)):
for item in result[line]:
print(item)
count = count + 1
返回:卢卡斯 5 蒂姆 2
- 3 回答
- 0 关注
- 587 浏览
添加回答
举报
0/150
提交
取消
