【发布时间】:2013-05-09 03:52:55
【问题描述】:
我有一个如下所示的嵌套列表:
lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]
我想在lst 中找到唯一的子列表。使用上面的例子,我想找到:
lst_set = [1,2,3],[1,2],[2,3],[4,5],[2,4]]
顺序无关紧要。也就是说[2,4]和[4,2]是一样的。
【问题讨论】:
标签: python
我有一个如下所示的嵌套列表:
lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]
我想在lst 中找到唯一的子列表。使用上面的例子,我想找到:
lst_set = [1,2,3],[1,2],[2,3],[4,5],[2,4]]
顺序无关紧要。也就是说[2,4]和[4,2]是一样的。
【问题讨论】:
标签: python
set(tuple(sorted(i)) for i in lst)
【讨论】:
In [22]: lst = [[1,2,3],[1,2],[1,2,3],[2,3],[4,5],[2,3],[2,4],[4,2]]
In [23]: set(frozenset(item) for item in lst)
Out[23]:
set([frozenset([2, 4]),
frozenset([1, 2]),
frozenset([2, 3]),
frozenset([1, 2, 3]),
frozenset([4, 5])])
【讨论】:
看看内置的set()函数。由于列表不可散列,您可能需要在使用 set() 之前将列表转换为元组。
意思是:
set([tuple(sorted(x)) for x in lst])
【讨论】: