python 2-D列表如何制作一组

时间:2016-08-22 14:12:40

标签: python

作为python列表跟随

list1 = [[1,2],[3,4],[1,2]]

我想制作一套,所以我可以使用像

这样的唯一列表项
list2 = [[1,2],[3,4]].

我可以使用python中的某些功能吗?感谢

6 个答案:

答案 0 :(得分:3)

那样做:

>>> list1 = [[1,2],[3,4],[1,2]]
>>> list2 = list(map(list, set(map(tuple,list1))))
>>> list2
[[1, 2], [3, 4]]

答案 1 :(得分:1)

不幸的是,没有一个内置函数可以处理这个问题。列表是“不可用的”(见this SO post)。所以你不能在Python中拥有set list

但是元组 可以使用:

l = [[1, 2], [3, 4], [1, 2]]
s = {tuple(x) for x in l}

print(s)

# out: {(1, 2), (3, 4)}

当然,如果您希望稍后(例如)append到主数据结构中的这些列表,这对您来说无关紧要,因为它们现在都是元组。如果您绝对必须拥有原始列表功能,则可以查看this code recipe for uniquification by Tim Peters

答案 2 :(得分:1)

请注意,这只会删除重复的子列表,但不会考虑子列表的各个元素。例如:[[1,2,3], [1,2], [1]] - > [[1,2,3], [1,2], [1]]

>>> print map(list, {tuple(sublist) for sublist in list1})
[[1, 2], [3, 4]]

答案 3 :(得分:0)

你可以试试这个:

list1 = [[1,2],[3,4],[1,2]]
list2 = []
for i in list1:
    if i not in list2:
        list2.append(i)
print(list2)
[[1, 2], [3, 4]]

答案 4 :(得分:0)

最典型的解决方案已经发布,所以让我们给出一个新解决方案:

Python 2.x

list1 = [[1, 2], [3, 4], [1, 2]]
list2 = {str(v): v for v in list1}.values()

Python 3.x

list1 = [[1, 2], [3, 4], [1, 2]]
list2 = list({str(v): v for v in list1}.values())

答案 5 :(得分:0)

没有内置的单一功能来实现这一目标。你收到了很多答案。除此之外,您还可以使用lambda函数来实现此目的:

list(map(list, set(map(lambda i: tuple(i), list1))))