Python 如何从元组列表中删除项?

Python 如何从元组列表中删除项?,python,numpy,Python,Numpy,我想使用索引列表从元组列表中删除项: 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),indx

我想使用索引列表从元组列表中删除项:

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)
但这并不会产生预期的结果。

如中所述,您需要在此处使用
选项,因为如果不提及它,它将删除展开版本上的元素。因此,您需要这样做-

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]]
In [16]: map(tuple,np.delete(mytupList,indxList,axis=0))
Out[16]: [(1, 2), (5, 6)]

要保留元组列表的格式,请在删除后使用,如下所示-

map(tuple,np.delete(mytupList,indxList,axis=0))
样本运行-

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]]
In [16]: map(tuple,np.delete(mytupList,indxList,axis=0))
Out[16]: [(1, 2), (5, 6)]
我在这篇文章中的回答是:


请注意,这确实会删除所需的项,而不是创建新列表,并用新列表替换原始变量。(我还没有测试哪一个更有效,如果列表足够大的话,我会期待这一个)

它是如何“不起作用的”?产生了什么结果?这会产生一个列表[[1,2],[5,6]]-有没有办法保留元组列表?@wunderkind请查看最后的编辑。太好了!那真是一种享受!mylist=[(23,23),(434353),(3533535),(1425475)]oops…是的,这也很有效(经过测试),尽管我确信我可以在元组列表中使用它。效率更高,速度更快?我没听清你的问题。在元组列表中执行此操作?没用?是的,效率和“更快”一样高。所以我生成了一个元组列表,这些元组是坐标点,并找到了一些代码来从元组对中创建多段线。我必须更多地阅读列表、元组和列表理解,因为我似乎不理解包含元组的列表可以被视为普通列表。因此,我开始专注于寻找一个处理元组的解决方案,并使用@Divakar建议的解决方案,对您的解决方案进行折扣。不过你的解决方案确实有效,谢谢。UPDATE-@tglaria我已经在一个小的元组列表上测试了你的解决方案,它可以工作,但是当我在一个更大的数据集(1000个元组)上尝试它时,我得到了以前担心会发生的事情:回溯(最近一次调用):File“O:\mytests\coords.py”,第71行,在del pairt[i]TypeError中:“tuple”对象不支持项删除。Divakar的解决方案不产生此tuple问题