无意间练习python的for in 循环 发现了有意思的东西
for in 的遍历可能是基于index
代码如下:
lanuage = ['C++','GO','Python','Java']
for item in lanuage:
if item == 'Python':
print(lanuage)
print('get it! '+item)
break
elif item != 'Python' :
print(lanuage)
lanuage.remove(item)
print(item)
原本以为会print出如下结果:
['C++', 'GO', 'Python', 'Java']
C++
[ 'GO', 'Python', 'Java']
GO
[ 'Python', 'Java']
get it! Python
实际结果:
猜测:
可能for in 循环是根据list 的索引进行的的
GO 原来是list[1],经过 remove() 后变成了 list[0]
验证:
lanuage = ['C++','GO','Python','Java']
for item in lanuage:
if item == 'Python':
print(lanuage)
print('get it! '+item+' the index is:'+str(lanuage.index(item)))
break
elif item != 'Python' :
print(lanuage)
lanuage.remove(item)
结果如下:
猜测得到证实。
总结:
Python的 for ...in ...遍历基于索引 ,在和remove() 共同使用的时候可能导致遍历不全
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)