您的位置:首页 > 编程语言 > Python开发

Python用for循环来遍历list时,for循环体内有改动list长度的操作的情况

2016-07-31 13:57 1451 查看

Python用for循环来遍历list时,for循环体内有改动list长度的操作的情况

例子:

#Python 3.4.3
list1 = [i for i in range(0, 10)]
for j in range(0, len(list1)):
if list1[j] % 2 == 0: #如果list1[j]是一个偶数
del list1[j] #那就删除list1[j]
print (list1)


注意,
lists
这个
list
变量在for循环进行的过程中,会被删除一部分元素(偶数),也就是说,在for循环结束之前len(lists)的值是会变化的。那结果会是什么呢?

Traceback (most recent call last):
File "<pyshell#25>", line 2, in <module>
if list1[j] % 2 == 0:
IndexError: list index out of range


超出范围了,看来for循环并没有意识到len(lists)的值发生了变化,在删除了一部分数之后,它还以为lists的长度是10。

我们不妨试试稍微改一下程序:

list1 = [i for i in range(0, 10)]
lenth = len(list1) #我们把lists的长度用一个变量表示
for j in range(0, lenth):
if lists[j] % 2 == 0:
del lists[j]


这时候for循环的范围是从0到变量lenth的值。输出如下:

[1, 3, 5, 7, 9]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python