作为python列表跟随
list1 = [[1,2],[3,4],[1,2]]
我想制作一套,所以我可以使用像
这样的唯一列表项list2 = [[1,2],[3,4]].
我可以使用python中的某些功能吗?感谢
答案 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))))