嵌套for循环如何工作?

时间:2016-05-10 10:14:28

标签: python combinations

这是我写的代码,完美无缺:

box = [1, 2, 3, 4, 5]

for i in box:
    for x in box:
        print (i,x)

输出以下内容:

1 1
1 2
1 3
1 4
1 5
2 1
2 2

有趣的是:我得到了我想要的东西,但是我真的不理解逻辑。对于我写的代码,我希望得到以下输出:

1 1
2 2
3 3
4 4 
5 5 

为什么呢?因为根据我的想法,我说了以下内容:

对于框中的每个值i(左列),并为每个值x(右列)打印两者。

事实上,我认为代码应该充当:

for i,y in zip(box,box):
    print(i,y)

我的问题是,为什么函数中的嵌套for循环的行为与我预期的不同?

如何知道创建number * number行? 它如何对这些数字进行排序,在那里实际发生了什么关系?

4 个答案:

答案 0 :(得分:1)

这是逻辑。 for i in boxi将开始1并继续前进,直到5(列表中的所有元素)。因此,如果您在此循环中打印i,您会看到i首先1,然后i2 ...直到{{1} }是i(框中的最后一个元素)。 但是如果你嵌套另一个for循环,那么每次5与列表中的元素不同时,它将执行相同的操作(从1开始并向前移动直到5)。因此,当ii时,在更改为另一个1之前,它将启动第二个循环(i),因此当for x in box为{{1}时}} i将更改为1 == xx == 1 ... x == 2 。当这个嵌套循环结束时,x将更改为列表中的另一个元素,因此现在5将为i,并且嵌套循环再次启动,因此i == 2x == 1 ...,x == 2

我想如果你试试这个

,你可能会理解它是如何工作的
x

答案 1 :(得分:0)

你的循环中有一个循环,所以这个内循环将在外循环的每次迭代中完整地运行。因此,对于每个数量的i,您需要遍历x的整个循环。

答案 2 :(得分:0)

此:

if ((function() {// Code runs here})();) 
    {
        //This code
    }

与此相同:

box = [1, 2, 3, 4, 5]
for i in box:
    for x in box:
        print (i,x)

答案 3 :(得分:-1)

如果这是你想要的


1 1
2 2
3 3
4 4
5 5

然后这样做:


for i in box:
    print(i,i)


如果你这样做:


for i in box:
    for x in box:
        print (i,x)

然后在外循环执行一次后,它将执行内循环,直到内循环为COMPLETE。这意味着对于1个外循环,内循环将执行5次 逻辑是这样的:

  • 我将检索框arrray的第一个元素的值
  • x将检索框arrray的第一个元素的值
  • 然后将打印1 1
  • x将检索box数组的第二个元素的值
  • 然后将打印1 2
  • x将检索box数组的第三个元素的值
  • 然后将打印1 3。依此类推,直到打印出1
  • 我将检索box数组的第二个元素的值
  • x将检索框arrray的第一个元素的值
  • 然后将打印2 1
  • x将检索box数组的第二个元素的值
  • 然后将打印2 2 等等。