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问题