#错误示范
a = ['x1','x2','x3','x4','x5','x6']
for i in a:
if 'x' in i:
a.remove(i)
print(a) # 期望输出 [] ,实际输出['x2','x4','x6']
#正确思路如下
# 方法一
a = ['x1','x2','x3','x4','x5','x6']
b = ['x1','x2','x3','x4','x5','x6'] #解决办法是拷贝一份
# b = a ; 此操作会将a 和 b 指向同一地址,无法解决跳帧问题
for i in b:
if 'x' in i:
a.remove(i)
print(a) # 输出[]
# 方法二
a = ['x1','x2','x3','x4','x5','x6']
for i in range(len(a)-1,-1,-1):
if 'x' in a[i]:
a.remove(a[i])
print(a) # 输出[], a = ['x1','x2','x3','k4','x5','y6'],也可以达到预期
# 但是如果单次循环remove了不止一个元素,len(a)-1猜测应该也会IndexError
#错误示范,关于这点挺值得思考
for i in range(-1,-len(a)-1,-1):
if 'x' in a[i]:
a.remove(a[i])
print(a) # 会报错 IndexError: list index out of range
Python的for循环和remove方法
于 2023-06-25 10:33:45 首次发布
文章讨论了在Python中遍历列表并尝试删除元素时可能导致的问题。错误示例展示了直接遍历列表并在循环中删除元素会导致意外的结果。提出了两种解决方法:一是创建列表副本进行遍历,二是反向遍历列表以避免索引问题。同时,还指出了一种错误的反向遍历范围导致的`IndexError`。
摘要由CSDN通过智能技术生成