python删除列表元素_python基础篇-循环删除列表

先来看一段代码:

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

为什么会是这样的结果?

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

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

python删除列表元素_python基础篇-循环删除列表_第1张图片

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()

你可能感兴趣的:(python删除列表元素)