rows = range(1, 3) # range(1, 3)--> 1, 2
cols = range(1, 4) # range(1, 4) --> 1, 2, 3
for row in rows:
for col in cols:
print(row, col) # --- > 1 1 1 2 1 3 2 1 2 2 2 3
这里不清楚为什么在第二列 1、2?我们取 row 是行的索引,col 是列的索引,range(1, 3) range (1, 4)
- 行数和列数。
0 pass:临时变量 row 取自 rows(1, 2) - 1,然后 0 迭代 col 临时变量取自 cols(1, 2, 3) - 1 。
1 遍:临时变量行取自行 (1、2) - 2?
为什么最后有6列?如果我们对每个循环单独取它们,则得到 5,如果只有第 6 个是 0 pass(迭代)。
另一个问题是我(在循环之前没有分配给临时变量)默认情况下总是从 0 开始迭代吗?
第一次迭代将从中获取一个数字
1
并rows
走得更远。还有一个循环,直到三个都走完,这个循环才会结束cols: 1-1, 1-2, 1-3
。只有在那之后,您再次上升到上面的级别并取下一个rows
等于的值,2
然后再进行三个嵌套迭代cols: 2-1, 2-2, 2-3
。总数是二乘三,一共六次传球。你的错误是在循环内的所有操作都完成之前,你的判断上升了一个层次。在里面你有三个必经的段落。
即使您将某些内容分配给变量,
i
迭代仍将从头开始。循环for val in iter
意味着从中取出下一个元素iter
并将其放入val
,然后我们才进入主体。以此类推,直到遍历完所有的元素iter
。因此,即使赋值了一些东西i
,它也会被覆盖,因为 这里最主要的是序列本身iter
。