【发布时间】:2016-05-10 10:14:28
【问题描述】:
这是我写的代码,运行良好:
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 行的?
它是如何对数字进行排序的,那里究竟发生了什么关系?
【问题讨论】:
-
为什么不应该它表现得那样?您的内循环针对外循环的每个步骤运行。所以对于
i == 1,内部循环在j上运行一个完整的循环。然后i == 2等再次相同。 -
用笔和纸一步一步地完成它......
-
或使用pythontutor.com/visualize.html#mode=edit 可视化代码流和执行
-
谢谢你们,我已经检查了提供的链接 sp asic,我已经看到了可视化。现在它更有意义了:)谢谢:)
标签: python combinations