python列表删除指定索引元素_在Python中按索引删除列表中的多个元素,python,通过,index,list...

2023-05-16

python中删除‘指定值的元素’可以直接通过remove()实现比较简单。

但是删除多个index对应的元素,却比较麻烦,如果缺少积累,可能需要花很多时间去思考。

例子:

idx = [0, 1, 2]

a = ['a', 'b', 'c', 'd', 'e', 'f']

问题:删除idx中元素作为索引的a中的元素。

1、如果写为:

for i in idx:

del a[i]

这样是错误的,因为随着a中的元素被删除,a中的index是发生了变化的

2、如果写为

for idx0, elem in enumerate(a):

if idx0 in idx:

del a[idx0]

这样也是不可以的,因为随着a中的元素被删除,a中的index也是发生了变化的,for那里的a一直在变化

例①:

b = [1, 2, 3]

for i, ele in enumerate(b):

print('ppp', i, ele)

if i == 0:

del b[i]

print(b)

返回:

ppp 0 1

[2, 3]

ppp 1 3

[2, 3]

例②:

b = [1, 2, 3]

num = 0

for i in b:

num += 1

del b[0]

print(b, num) #最后一个元素被删除后,内存中没有b这个对象了,所以没有num==3

返回:

[2, 3] 1

[3] 2

例③:

b = [1, 2, 3]

num = 0

for i, ele in enumerate(b):

print('ppp', i, ele)

num += 1

del b[0]

print(b, num)

返回:

ppp 0 1

[2, 3] 1

ppp 1 3

[3] 2

3、唯一正确的方法:

把idx倒过来

for i in reversed(idx):

del a[i]

这样就可以保证前面的元素的index不发生改变

补充:

del 语句能进行切片删除;且能删除变量。

clear,是毁灭性的删除;

remove,指定元素删除,只能删除第一个同名的元素。

pop ,指定索引删除,只能删除一个,且默认不写索引,有和append相反的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python列表删除指定索引元素_在Python中按索引删除列表中的多个元素,python,通过,index,list... 的相关文章

随机推荐