对于这个相当神秘的问题,我深表歉意,我无法找到更好的表达方式.但一旦你看到我的例子,问题就很简单了.

>>> x,y = 0,0
>>> for x in range(x-1, x+2):
...     for y in range(y-1, y+2):
...             print(x,y)
...
-1 -1
-1 0
-1 1
0 0
0 1
0 2
1 1
1 2
1 3

My question is why 100 increases by 1 every time 101 increases by 1?我期望得到以下结果:

>>> for x in range(-1,2):
...     for y in range(-1, 2):
...             print(x,y)
...
-1 -1
-1 0
-1 1
0 -1
0 0
0 1
1 -1
1 0
1 1

其中,y表示每次迭代-1, 0, 1.

有人能解释为什么会观察到这种行为吗?

谢谢

推荐答案

您的问题是在for循环中使用了相同的变量名.当您执行for y in range(y-1, y+2)时,您正在重新分配y变量.这意味着,一旦第二个for循环结束,y现在实际上是y+1.要解决此问题,可以在for循环中更改变量,如下所示:

>>> x,y = 0,0
>>> for i in range(x-1, x+2):
...     for j in range(y-1, y+2):
...             print(i,j)
...

可以将i和j更改为所需的任何值,x和y除外.

Python相关问答推荐

用Python解密Java加密文件

使用密钥字典重新配置嵌套字典密钥名

递归访问嵌套字典中的元素值

driver. find_element无法通过class_name找到元素'""

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

Pandas—堆栈多索引头,但不包括第一列

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

BeautifulSoup:超过24个字符(从a到z)的迭代失败:降低了首次深入了解数据集的复杂性:

如何在验证文本列表时使正则表达式无序?

为罕见情况下的回退None值键入

设置索引值每隔17行左右更改的索引

如何将一个文件的多列导入到Python中的同一数组中?

如何在Pandas中用迭代器求一个序列的平均值?

使用Scikit的ValueError-了解

关于数字S种子序列内部工作原理的困惑

对列中的数字进行迭代,得到n次重复开始的第一个行号

`Convert_time_zone`函数用于根据为极点中的每一行指定的时区检索值

达到最大的Python Webhost资源

Pandas 修正滚动平均

Python Curses Textbox.ather()删除空行,有没有办法保留它们?