玖叶教程网

前端编程开发入门

python基础篇-循环删除列表(python如何循环遍历一个列表)

先来看一段代码:

list = [11, 22, 33, 44]
for li in list:
 list.remove(li)
print(list) # [22, 44]

为什么会是这样的结果?

我们想的可能是每一次循环遍历就删除正在循环的那个元素,最后的结果就是一个空列表。

那for循环内部到底干了什么呢?

for的运?过程. 会有?个指针来记录当前循环的元素是哪?个, ?开始这个指针指向第0个. 然后获取到第0个元素. 紧接着删除第0个. 这个时候. 原来是第?个的元素会?动的变成第0个. 然后指针向后移动?次, 指向1元素. 这时原来的1已经变成了0, 也就不会被删除了.

那pop和del可不可以呢?

list = [11, 22, 33, 44]
for li in list:
 list.pop()
print(list) # [11, 22]
list = [11, 22, 33, 44]
for li in list:
 del list[li]
print(list) # 报错IndexError: list assignment index out of range

答案是否定的。

那到底怎样循环删除列表呢?

# 方式一

list = [11, 22, 33, 44]

for i in range(0, len(list)):

list.pop()

print(list) # []

# 方式二

list = [11, 22, 33, 44]

new_list = []

for li in list:

new_list.append(li)

for li in new_list:

list.remove(li)

print(list) # []

注意: 由于删除元素会导致元素的索引改变, 所以容易出现问题. 尽量不要在循环中直接去删除元素. 可以把要删除的元素添加到另?个集合中然后再批量删除.

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言