在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
,然后再次将元组键转换为列表。(如果顺序很重要)正是我所期待的,它对你有效,会建议你接受答案,你认为最好的答案,会帮助有类似问题的人和整个社区。正是我所期待的,它对你有效,会建议你接受答案,你认为最好的答案,将帮助有类似问题的人和整个社区。