Python 从嵌套列表中删除重复项
我有一个列表,希望从中删除重复的列表。我有办法工作,但看起来很难看,我不确定是否有更好的办法Python 从嵌套列表中删除重复项,python,list,Python,List,我有一个列表,希望从中删除重复的列表。我有办法工作,但看起来很难看,我不确定是否有更好的办法 a_list = [[1,2],[2,3],[1,2]] print [list(tup) for tup in set([tuple(x) for x in a_list])] 其中打印: [[1,2],[2,3]] 这就是我想要的。我使用的是小列表,所以我不关心速度,但我感兴趣的是是否有更好的方法来实现这一点。您可以将其缩短一点: print list(set(tuple(x) for x in
a_list = [[1,2],[2,3],[1,2]]
print [list(tup) for tup in set([tuple(x) for x in a_list])]
其中打印:
[[1,2],[2,3]]
这就是我想要的。我使用的是小列表,所以我不关心速度,但我感兴趣的是是否有更好的方法来实现这一点。您可以将其缩短一点:
print list(set(tuple(x) for x in a_list))
输出:
[(1, 2), (2, 3)]
如果您不太担心显示格式,那么只需停止最外层的列表转换,给出:
set([(1, 2), (2, 3)])
我对目前给出的三个答案运行计时器,使用/usr/shar/dict/words作为每个元组的第二部分,第一个元素是一个简单的1。该文件有近50万(479829)字 0.517719984055列表->设置->列表(您的原始代码) 1.30243611336列表->设置->地图(tmajest的建议) ??? 建立新列表(萨尔曼的建议) 最后一个未在超过6分钟的运行时间内完成top确实表明它仍然充分利用了一个CPU
>>> a_list=[[1,2],[2,3],[1,2]]
>>> newlist=[]
>>> for each in a_list:
if each not in newlist:
newlist.append(each)
>>> newlist
[[1, 2], [2, 3]]
创建一个新的空列表。如果某个列表中的任何列表不在newlist中,请将其附加到newlist。希望这有帮助。:) 如果最终结果必须是列表,那么就没有更短的方法了。如果需要,可以使用地图而不是列表理解:
list(map(list, set(map(tuple, a_list))))
这将生成一个包含元组的列表。我希望它是一个嵌套着列表的列表