这是我写的代码,完美无缺:
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
行?
它如何对这些数字进行排序,在那里实际发生了什么关系?
答案 0 :(得分:1)
这是逻辑。 for i in box
,i
将开始1
并继续前进,直到5
(列表中的所有元素)。因此,如果您在此循环中打印i
,您会看到i
首先1
,然后i
是2
...直到{{1} }是i
(框中的最后一个元素)。
但是如果你嵌套另一个for循环,那么每次5
与列表中的元素不同时,它将执行相同的操作(从1开始并向前移动直到5)。因此,当i
为i
时,在更改为另一个1
之前,它将启动第二个循环(i
),因此当for x in box
为{{1}时}} i
将更改为1
== x
,x
== 1
... x
== 2
。当这个嵌套循环结束时,x
将更改为列表中的另一个元素,因此现在5
将为i
,并且嵌套循环再次启动,因此i
== 2
,x
== 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次 逻辑是这样的: