在python中获取一组2d列表

在python中获取一组2d列表,python,arrays,algorithm,list,set,Python,Arrays,Algorithm,List,Set,我有一个如下的清单 t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]] 我需要得到一组这样的结果 t=[[1, 7], [3, 7], [5, 8]] 我试图使用t=set(t)但它不起作用如果您不关心顺序,您可以首先使用map()函数将内部列表转换为元组,然后将它们转换为set,然后返回到list 范例- >>> t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]] >>> t = lis

我有一个如下的清单

t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]]
我需要得到一组这样的结果

t=[[1, 7], [3, 7], [5, 8]]

我试图使用
t=set(t)
但它不起作用

如果您不关心顺序,您可以首先使用
map()
函数将内部
列表转换为
元组
,然后将它们转换为
set
,然后返回到
list

范例-

>>> t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]]
>>> t = list(set(map(tuple,t)))
>>> t
[(3, 7), (5, 8), (1, 7)]

如果您不关心顺序,可以首先使用
map()
函数将内部
列表
转换为
元组
,然后将它们转换为
,然后返回到
列表

范例-

>>> t=[[1, 7], [3, 7], [1, 7], [5, 8], [3, 7]]
>>> t = list(set(map(tuple,t)))
>>> t
[(3, 7), (5, 8), (1, 7)]

问题是列表是可变的,因此人们无法对它们进行设置,因为它们可能会发生变化。因此,您希望使用不可变的元组。因此,您可以使用:

list(set([tuple(ti) for ti in t]))

问题是列表是可变的,因此人们无法对它们进行设置,因为它们可能会发生变化。因此,您希望使用不可变的元组。因此,您可以使用:

list(set([tuple(ti) for ti in t]))

如果你真的关心秩序:

def func(items):
    seen = set()
    for item in items:
        item = tuple(item)
        if item not in seen:
            yield item
            seen.add(item)
或者,您只需将list子类化并覆盖append,这样就不会添加重复项:

class T(list):
    def append(self, item):
        if item not in self:
            list.append(self, item)
使用的方法如下:

>>> t = T([[1, 7], [3, 7], [5, 8]])
>>> t
[[1, 7], [3, 7], [5, 8]]
>>> t.append([1, 7])
>>> t
[[1, 7], [3, 7], [5, 8]]

如果你真的关心秩序:

def func(items):
    seen = set()
    for item in items:
        item = tuple(item)
        if item not in seen:
            yield item
            seen.add(item)
或者,您只需将list子类化并覆盖append,这样就不会添加重复项:

class T(list):
    def append(self, item):
        if item not in self:
            list.append(self, item)
使用的方法如下:

>>> t = T([[1, 7], [3, 7], [5, 8]])
>>> t
[[1, 7], [3, 7], [5, 8]]
>>> t.append([1, 7])
>>> t
[[1, 7], [3, 7], [5, 8]]

集合只能包含不可变的元素<代码>列表
是可变类型,您需要将项转换为不可变类型,例如
元组

set(map(tuple, t))

集合只能包含不可变的元素<代码>列表是可变类型,您需要将项转换为不可变类型,例如
元组

set(map(tuple, t))

将项目转换为元组,并将其传递到
OrderedDict.fromkeys
,然后再次将元组键转换为列表。(如果顺序很重要)将项目转换为元组,并将其传递给
OrderedDict.fromkeys
,然后再次将元组键转换为列表。(如果顺序很重要)正是我所期待的,它对你有效,会建议你接受答案,你认为最好的答案,会帮助有类似问题的人和整个社区。正是我所期待的,它对你有效,会建议你接受答案,你认为最好的答案,将帮助有类似问题的人和整个社区。