以下代码:
x = range(10)
for i in x:
print(i)
for j in x:
print(">> %d" % j)
break
我原本期望输出为:
0
>> 1
2
>> 3
..
但相反,它是:
0
>> 0
1
>> 0
2
>> 0
..
为什么范围会以这种方式表现?
答案 0 :(得分:3)
通过将x
转换为iterator,您可以实现预期的行为。
x = iter(range(10))
for i in x:
print(i)
for j in x:
print('> {}'.format(j))
break
返回
0
> 1
2
> 3
4
> 5
6
> 7
8
> 9
这告诉我们的问题不在于问题不在于break
每个人说出内循环,而是range
在你循环时没有耗尽。发生这种情况是因为range
不是迭代器,因此每次都会重新启动,而不是从停止的地方开始。
答案 1 :(得分:2)
for j in x:
print(">> %d" % j)
break
您正在打破J的循环,导致J的值重置并且每次都返回到0。