我想使用索引列表从我的元组列表中删除项目:
mytupList = [(1,2),(2,3),(5,6),(8,9)]
indxList = [1,3]
我试过像这样使用numpy:
newtupList = numpy.delete(mytupList,indxList).tolist()
但它没有奏效。
我想要我的newtupList = [(1,2),(5,6)]
我做错了什么?我也尝试过:a = np.array(mytupList)
newtup = np.delete((a),indxList)
但这不会产生预期的结果。
答案 0 :(得分:1)
如docs
中所述,您需要在那里使用axis
选项,因为如果没有提及它,它将删除展平版本上的元素。因此,你需要这样做 -
np.delete(mytupList,indxList,axis=0).tolist()
示例运行 -
In [21]: mytupList
Out[21]: [(1, 2), (2, 3), (5, 6), (8, 9)]
In [22]: indxList
Out[22]: [1, 3]
In [23]: np.delete(mytupList,indxList).tolist() # Flattens and deletes
Out[23]: [1, 2, 5, 6, 8, 9]
In [24]: np.delete(mytupList,indxList,axis=0).tolist() # Correct usage
Out[24]: [[1, 2], [5, 6]]
要保留元组列表的格式,请在删除后使用map
,如下所示 -
map(tuple,np.delete(mytupList,indxList,axis=0))
示例运行 -
In [16]: map(tuple,np.delete(mytupList,indxList,axis=0))
Out[16]: [(1, 2), (5, 6)]
答案 1 :(得分:0)
我在这篇文章中的回答:Deleting multiple elements from a list
for i in sorted(indices, reverse=True):
del somelist[i]
看到这确实删除了您想要的项目,而不是创建新列表,用新列表替换原始变量。 (我没有测试哪个更高效,如果列表足够大,我会期待这个)