我想从列表列表中删除所有重复列表.
所以我有一个像这样的列表.
a = [[1,2],[1,2],[3,4,5],[3,4,5],[3,4,5]]
Run Code Online (Sandbox Code Playgroud)
我希望有:
b = [[1,2],[3,4,5]]
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做.
谢谢
mgi*_*son 61
你可以使用一套:
b_set = set(map(tuple,a)) #need to convert the inner lists to tuples so they are hashable
b = map(list,b_set) #Now convert tuples back into lists (maybe unnecessary?)
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢列表推导/生成器:
b_set = set(tuple(x) for x in a)
b = [ list(x) for x in b_set ]
Run Code Online (Sandbox Code Playgroud)
最后,如果订单很重要,您可以随时排序b:
b.sort(key = lambda x: a.index(x) )
Run Code Online (Sandbox Code Playgroud)
Her*_*utt 12
如果列表的顺序不重要,请参阅mgilson的答案.如果您想保留订单,请执行以下操作:
b = list()
for sublist in a:
if sublist not in b:
b.append(sublist)
Run Code Online (Sandbox Code Playgroud)
这将使订单保留在原始列表中.但是,它比使用集更慢,更冗长.
| 归档时间: |
|
| 查看次数: |
24381 次 |
| 最近记录: |