list1 = [1,2,5,6,7,8,10,41,69,78,83,100,105,171]
index_list = [0,4,7,9,10]
如何使用index_list中的索引从list1中弹出一个项目?
output_list = [2,5,6,8,10,69,100,105,17]
答案 0 :(得分:1)
相反如何:保留列表中不的元素:
>>> list1 = [1,2,5,6,7,8,10,41,69,78,83,100,105,171]
>>> index_list = [0,4,7,9,10]
>>> index_set = set(index_list) # optional but faster
>>> [x for i, x in enumerate(list1) if i not in index_set]
[2, 5, 6, 8, 10, 69, 100, 105, 171]
注意:这不会修改现有列表,但会创建一个新列表。
答案 1 :(得分:0)
使用list.remove(item)
for n in reversed(index_list):
list1.remove(list1[n])
或list.pop(index)
for n in reversed(index_list):
list1.pop(n)
这两种方法都在这里描述https://docs.python.org/2/tutorial/datastructures.html
在index_list上使用reversed()(假设索引总是按照您显示的情况排序),因此您从列表末尾删除项目,它应该可以正常工作。
答案 2 :(得分:0)
你可以试试这个 -
for index in sorted(index_list, reverse=True):
list1.pop(index)
print (list1)
pop()
有一个可选的参数索引。它将删除索引
答案 3 :(得分:0)
list1 = [1,2,5,6,7,8,10,41,69,78,83,100,105,171]
index_list = [0,4,7,9,10]
print([ t[1] for t in enumerate(list1) if t[0] not in index_list])
RESULT
[2,5,6,8,10,69,100,105,171]
枚举将创建如下所示的结构。
[(0, 1), (1, 2),(2, 5),(3, 6),(4, 7),(5, 8),...(13, 171)]
Where t = (0,1) (index,item)
t[0] = index
t[1] = item