【发布时间】:2015-12-16 14:52:22
【问题描述】:
以下嵌套控制结构在Python中执行时的输出是什么?
for x in range(3):
for y in range(x):
print x,y
我知道答案是
1 0
2 0
2 1
但我不清楚为什么是这个输出。
我知道 range(3) 函数会给你 {0, 1, 2} 那么为什么第一个输出不是 0 0 而不是 1 0?
【问题讨论】:
以下嵌套控制结构在Python中执行时的输出是什么?
for x in range(3):
for y in range(x):
print x,y
我知道答案是
1 0
2 0
2 1
但我不清楚为什么是这个输出。
我知道 range(3) 函数会给你 {0, 1, 2} 那么为什么第一个输出不是 0 0 而不是 1 0?
【问题讨论】:
因为 range(0) 返回一个空列表[],所以内部循环第一次运行时什么都不做。
【讨论】:
让我们来看看这个
首次运行
x = 0
range(0) is []
the print is never reached
第二次运行
x = 1
range(1) is [0] <-- one element
print is called once with 1 0
第三次运行
x = 2
range(2) is [0,1] <-- two elements
print is called twice with 2 0 and 2 1
【讨论】: