我开始用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
答案 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]