Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我的循环范围相同时,为什么我的子循环与主循环的值不同?_Python_Python 3.x_For Loop_Printing - Fatal编程技术网

Python 当我的循环范围相同时,为什么我的子循环与主循环的值不同?

Python 当我的循环范围相同时,为什么我的子循环与主循环的值不同?,python,python-3.x,for-loop,printing,Python,Python 3.x,For Loop,Printing,喂,有人能解释一下为什么会这样吗- size = 10 for x1 in range(-size+1, size): for y1 in range(-size+1, size): for x2 in range(-size+1, size): for y2 in range(-size+1, size): print(f'x1: {x1}, y1: {y1}') print(f'x

喂,有人能解释一下为什么会这样吗-

size = 10
for x1 in range(-size+1, size):
    for y1 in range(-size+1, size):
        for x2 in range(-size+1, size):
            for y2 in range(-size+1, size):
                print(f'x1: {x1}, y1: {y1}')
                print(f'x2: {x2}, y2: {y2}')
给我x1,y1,x2,y2的不同值 我试着打印它们,它们的值是不同的。这是输出的一部分

x2: 0, y2: -2
x1: -7, y1: 3
x2: 0, y2: -1
x1: -7, y1: 3
x2: 0, y2: 0
x1: -7, y1: 3
x2: 0, y2: 1
x1: -7, y1: 3
x2: 0, y2: 2
x1: -7, y1: 3

如果你看到所有环路的范围都是一样的,主环路和3个子环路,所以我认为x1,y1,x2,y2都应该是一样的。为什么有些地方的值不同?

最内部的循环是变量y2。这在每次迭代中都会发生变化。如果您将打印语句替换为以下内容,则应该更加清晰

print(x1,y1,x2, y2)
您将看到最后一个位置在每次迭代中都会发生变化。其他的则逐渐变慢


因此,对于嵌套循环,每个迭代中至少有一个变量会发生变化。这与每个变量的范围无关

您的代码完全按照预期工作。每个循环变量都独立于其他变量

比较:

for x1 in (1, 2):
   for x2 in (3, 4):
     for y1 in (5, 6):
       for y2 in (7, 8):
         print(f'x1: {x1} x2: {x2} y1: {y1} y2: {y2}')
您是否希望x2采用值1和2?当然不是,因为它被告知循环3和4,这确实是它将要做的。它与x1完全无关

演示:

如果希望所有四个变量都具有相同的值,则应使用单个循环:

for x1 in range(-size+1, size):
    x2 = x1
    y1 = x1
    y2 = x2
    print(f'x1: {x1} x2: {x2} y1: {y1} y2: {y2}')

演示:

这里真的不欣赏文字图片。你能指出一些看起来出乎意料的值吗?我希望四个不同的循环变量在大多数情况下以完全可预测的方式具有不同的值,图片似乎证实了这一期望。@triplee如果您看到我所有的for循环的范围,它们是-range size+1,size,因此我认为它们应该给我相同的输出。感谢更新,但这还不清楚。听起来好像你期望x1和x2等总是包含完全相同的值,但不清楚为什么你会这样期望。它们是四个不同的变量,代码的工作方式完全符合理性人的预期。如果这不是你所期望的,你能再次说明你到底期望什么,以及你得到的结果与之有什么不同吗?如果你想要相同的值,你只需要一个循环;对于尺寸+1范围内的x1,尺寸:x2=x1;y1=x1;y2=x1在本教程中,每个迭代都应该有不同的值。他想要四个独立更新的变量。这就是嵌套循环的工作方式。为了便于理解,请将大小设置为4,并删除x2和y2的两个循环。这将使我们更清楚地了解正在发生的事情。