如何从元组列表中删除项目?
如何从元组列表中删除项目?
我想使用索引列表从元组列表中删除项目: \n
mytupList = [(1,2),(2,3),(5,6),(8,9)] indxList = [1,3]
\n我尝试使用numpy这样做: \n
newtupList = numpy.delete(mytupList,indxList).tolist()
\n但是这没有起作用。 \n我想要的newtupList = [(1,2),(5,6)]\n我做错了什么?我还尝试过: \n
a = np.array(mytupList) newtup = np.delete((a),indxList)
\n但是这没有产生期望的结果。
在这篇文章中,提问者最初想要从一个包含元组的列表中删除元素。他们尝试了一种方法,使用del关键字和一个反向排序的索引来删除元素。这个方法确实能够删除他们想要删除的元素,而不是创建一个新的列表来替换原始变量。然而,提问者还有一个问题,就是他们之前试过在一个元组的列表上使用这个方法,但是没有成功。他们认为这个方法更高效,尤其是在处理大型列表时。然而,回答者指出,这个方法在处理元组时会出错,因为元组不支持删除元素。回答者建议提问者检查他们的数据是否确实是一个列表的元组,并提供了一个解决方案来删除任何列表中的元素,无论其内容是什么。提问者后来测试了回答者的解决方案,并发现在小型数据集上运行良好。然而,在处理大型数据集时,他们遇到了一个他们之前担心会发生的问题,即无法在元组中删除元素的类型错误。回答者再次强调了他们的解决方案可以删除任何列表中的元素,而不管其内容是什么。他们建议提问者将他们的数据粘贴到某个地方以检查问题所在。
如上所述,你需要在删除元素时使用axis选项,因为如果不指定axis,它将删除一个扁平化的版本上的元素。因此,你需要像这样做 -
np.delete(mytupList,indxList,axis=0).tolist()
具体示例 -
mytupList = [(1, 2), (2, 3), (5, 6), (8, 9)]
indxList = [1, 3]
np.delete(mytupList,indxList).tolist() # 扁平化并删除
输出:[1, 2, 5, 6, 8, 9]
np.delete(mytupList,indxList,axis=0).tolist() # 正确使用
输出:[[1, 2], [5, 6]]
为了保持元组列表的格式,删除后使用map函数,像这样 -
map(tuple,np.delete(mytupList,indxList,axis=0))
具体示例 -
mytupList = [(1, 2), (2, 3), (5, 6), (8, 9)]
indxList = [1, 3]
map(tuple,np.delete(mytupList,indxList,axis=0))
输出:[(1, 2), (5, 6)]
这将产生一个列表[[1,2],[5,6]] - 有没有办法保留元组列表呢?
请查看末尾的编辑部分。
太好了!这很有效!