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]
相关文章推荐
- List常用操作:定义、索引、添加、遍历、排序、求长度。。。
- 写出3种遍历一个list的方法,(使用for循环)
- python天天进步(2)--文件操作之遍历目录
- 遍历List时如何选择使用for each 与for循环
- python文件操作之遍历目录
- Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
- python整理八——list的简单操作
- Python list 操作
- [Python]两个list对应元素操作(相减)
- 不生成一个新的LIST而直接对LIST的项目进行操作(转自python-cn list)
- python中list操作详解
- Python 列表(list)操作
- Python 列表 list 数组 array 常用操作集锦
- Python--文件操作之遍历目录
- 集合list在遍历时是不能做删除操作的
- python天天进步(3)--文件操作之遍历目录
- 如何在遍历List Map对象同时做删改操作
- python文件操作(遍历所有文件)
- List集合操作一:遍历与查找
- Python 区分List和一维数组的不同操作