python for循环遍历时,能动态删除元素吗?本文讲给你答案。
先来上个代码:
# -*- coding:utf-8 -*-
list = [1,2,3,4,5,6,7,8]
# 使用for 删除某个元素
for i in list:
if i == 3 or i == 4:
list.remove(i)
print(list)
当我们在for
循环里删除多个值的时候,发现只删除了第一个.后面的值没有删除成功. 分析过后发现 当for
循环到if i == 33 or i == 44
当i
的值为33
时满足条件,这时候就会去删除 list
列表里的33
, 删除过后后面的值就会把前面的空位填起来.这时候44
的key
就发生了改变.44
的key
位置就变成了33
以前key
的位置,这样44
就会删除不到了.
# -*- coding:utf-8 -*-
list = [1,2,3,4,5,6,7,8]
# 使用for 删除某个元素
for i in list:
if i == 3 or i == 4 or i== 5:
list.remove(i)
print(list)
# -*- coding:utf-8 -*-
list = [1,2,3,4,5,6,7,8]
# 使用for 删除某个元素
for i in list:
if i == 3 or i == 4 or i== 5 or i == 6:
list.remove(i)
print(list)
先使用深拷贝获取一份列表的拷贝,然后遍历原来的列表。
1.顺序遍历删除:ok
list_demo = [1,2,3,4,5,6]
for index, item in enumerate(list_demo[:]):
list_demo.remove(item)
print(list_demo)
2.倒叙遍历删除:ok
list_demo[::-1]
list_demo = [1,2,3,4,5,6]
for index, item in enumerate(list_demo[::-1]):
list_demo.remove(item)
print(list_demo)
3.倒序遍历删除:
a = [0, 1, 2, 3, 4, 4, 4, 4, 4, 4]
for i in range(len(a)-1, -1, -1):
if a[i] == 4:
del a[i]
numpy数组可以一边遍历,一边删除吗?
答案是:不能直接操作
但是可以转成list列表,然后进行操作:
numpy数组还没找到一边遍历,一边删除元素的方法。
转list后,里面的数据全部转成list了。
n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for index, x in enumerate(n[:]):
if index==3:
continue
n.remove(x)
print(n)
n = [np.array([1,2]),np.array([1,2]),np.array([1,2])]
data=np.array(n)
n=data.tolist()
for index, x in enumerate(n[:]):
if index < 1:
continue
n.remove(x)
print(n)