从python数组中删除具有给定元素索引作为列表的元素

时间:2018-08-11 07:03:57

标签: python

我开始用python编程。我想根据我拥有的索引值列表从数组中删除元素。这是我的代码

x = [12, 45, 55, 6, 34, 37, 656, 78, 8, 99, 9, 4]

del_list = [0, 4, 11]

desired output = [45, 55, 6, 37, 656, 78, 8, 99, 9]

这是我所做的

x = [12, 45, 55, 6, 34, 37, 656, 78, 8, 99, 9, 4]

index_list = [0, 4, 11]

for element in index_list:
    del x[element]

print(x)

我收到此错误。 我可以发现,由于删除了元素,列表会缩短,索引超出范围。但是我不确定该怎么做

Traceback (most recent call last):
IndexError: list assignment index out of range

3 个答案:

答案 0 :(得分:1)

您还可以使用枚举:

x = [12, 45, 55, 6, 34, 37, 656, 78, 8, 99, 9, 4]

index_list = [0, 4, 11]
new_x = []
for index, element in enumerate(x):
    if index not in index_list:
        new_x.append(element)
print(new_x)

答案 1 :(得分:0)

这个问题已经在这里有了答案。 How to delete elements from a list using a list of indexes?

顺便说一句,这将为您做

x = [12, 45, 55, 6, 34, 37, 656, 78, 8, 99, 9, 4]

index_list = [0, 4, 11]

value_list = []
for element in index_list:
    value_list.append(x[element])

for element in value_list:
    x.remove(element)

print(x)

答案 2 :(得分:0)

您可以按降序对del_list列表进行排序,然后使用list.pop()方法删除指定的索引:

for i in sorted(del_list, reverse=True):
    x.pop(i)

使x变为:

[45, 55, 6, 37, 656, 78, 8, 99, 9]