验证一下,在for i in range(len(a))循环中用len(a)所取得的终止数,一旦运行,则不再因a的长度变化而改变.一直循环到原终值.
# a=[1,2,3,4,5]
a=['a','b','c','d','e']
a=a+a[::-1]# a=a+list(range(len(a)))
print('\n'+str(a)+'\n\n列表元素个数是:'+str(len(a))+'\n'+'#'*50)
for i in range(len(a)):
if i==0: #用以控制输出#和'位号',元素,只需输出一次
ii=len(a) #变量ii用在最后面控制i的输出.
del a[0:3]; #删除3个元素,目的是改变a的长度.由前面if i==0条件控制,只删一次.
print('\n'+str(a)+'\n\n此时列表元素个数是:'+str(len(a))+'\n'+'#'*50+'\n\t位号\t\t元素')
if a!=[]: #避免i循环没有结束,而a因pop不断移除成为空列表时,再运行pop()而报错.
print('\t'+str(i),'\t\t'+a.pop()) #输出列表元素位号及元素
if len(a)==0:
print('*'*40)
# while a==[]:
# print(i+1)
# break
if a==[] and i+1<ii: #用以控制i输出,既不要输出已经输出过的6,也不要输出超过i的最值范围9
print(i+1)
print('#'*50)
运行显示:
['a', 'b', 'c', 'd', 'e', 'e', 'd', 'c', 'b', 'a']
列表元素个数是:10
##################################################
['d', 'e', 'e', 'd', 'c', 'b', 'a']
此时列表元素个数是:7
##################################################
位号 元素
0 a
1 b
2 c
3 d
4 e
5 e
6 d
****************************************
7
8
9
##################################################
[Finished in 0.1s]
列表循环0-6已完成,但 for循环还在进行到底.
可用清华毕神的可视化在线调试,:http://pythontutor.makerbean.com