需要一个命令保存嵌套列表重复删除

时间:2015-01-27 17:25:12

标签: python list

我有一个像

这样的嵌套列表
L = [[0,1,2,5,6],[1,2,9,4],[3,8,5,5,5]]

我想删除所有重复的内容:

L2 = [[0,1,2,5,6],[9,4],[3,8]]

我找到的所有功能,平面列表或不删除子列表中的重复。

有你的想法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用set和list-comprehension执行此操作:

>>> seen = set()
>>> seen_add = seen.add
>>> [[x for x in lst if x not in seen and not seen_add(x)] for lst in L]  
[[0, 1, 2, 5, 6], [9, 4], [3, 8]]

上述代码也可以写成:

>>> seen = set()
>>> out = []
>>> for lst in L:
    temp = []
    for x in lst:
        if x not in seen:
            temp.append(x)
            seen.add(x)
    out.append(temp)
...     
>>> out
[[0, 1, 2, 5, 6], [9, 4], [3, 8]]