一组独特的列表
A set of unique lists
我有一个列表列表,例如:
[['4bb', '3bb', '3', '1', '2', '4b', '4'],
['4bb', '3bb', '1', '3', '2', '4b', '4'],
['4bb', '3bb', '1', '2', '3', '4b', '4'],
['4bb', '1', '3bb', '3', '2', '4b', '4'],
['4bb', '1', '3bb', '2', '3', '4b', '4']]
我想创建一个较短列表的列表 - 只有每个列表最右边的三个元素,这样元素是唯一的,例如:
[['2', '4b', '4'],
['3', '4b', '4']]
我尝试使用 "set" 但这不起作用,因为列表不可散列。
您可以执行以下操作:
map(list, set(map(tuple, a)))
最内部的 map
将列表映射到元组,并且由于它是可散列的,因此您可以在其中应用 set
。然后你只需将它映射回 list
.
如果新列表中子列表的顺序无关紧要,您可以使用 tuple
instead of list
to store in the set()
。 tuple
s 是可散列的,因此可以添加到集合中。
使用 set comprehension
的示例(对于 Python 2.7+)-
setlst = {tuple(x[-3:]) for x in lst}
newlst = list(map(list, setlst))
对于不支持集合理解的 Python 版本,您可以将 list comprehension 与 set()
用作 set([<list comp>])
。
演示 -
>>> lst = [['4bb', '3bb', '3', '1', '2', '4b', '4'],
... ['4bb', '3bb', '1', '3', '2', '4b', '4'],
... ['4bb', '3bb', '1', '2', '3', '4b', '4'],
... ['4bb', '1', '3bb', '3', '2', '4b', '4'],
... ['4bb', '1', '3bb', '2', '3', '4b', '4']]
>>>
>>> setlst = {tuple(x[-3:]) for x in lst}
>>> newlst = list(map(list, setlst))
>>> newlst
[['2', '4b', '4'], ['3', '4b', '4']]
我有一个列表列表,例如:
[['4bb', '3bb', '3', '1', '2', '4b', '4'],
['4bb', '3bb', '1', '3', '2', '4b', '4'],
['4bb', '3bb', '1', '2', '3', '4b', '4'],
['4bb', '1', '3bb', '3', '2', '4b', '4'],
['4bb', '1', '3bb', '2', '3', '4b', '4']]
我想创建一个较短列表的列表 - 只有每个列表最右边的三个元素,这样元素是唯一的,例如:
[['2', '4b', '4'],
['3', '4b', '4']]
我尝试使用 "set" 但这不起作用,因为列表不可散列。
您可以执行以下操作:
map(list, set(map(tuple, a)))
最内部的 map
将列表映射到元组,并且由于它是可散列的,因此您可以在其中应用 set
。然后你只需将它映射回 list
.
如果新列表中子列表的顺序无关紧要,您可以使用 tuple
instead of list
to store in the set()
。 tuple
s 是可散列的,因此可以添加到集合中。
使用 set comprehension
的示例(对于 Python 2.7+)-
setlst = {tuple(x[-3:]) for x in lst}
newlst = list(map(list, setlst))
对于不支持集合理解的 Python 版本,您可以将 list comprehension 与 set()
用作 set([<list comp>])
。
演示 -
>>> lst = [['4bb', '3bb', '3', '1', '2', '4b', '4'],
... ['4bb', '3bb', '1', '3', '2', '4b', '4'],
... ['4bb', '3bb', '1', '2', '3', '4b', '4'],
... ['4bb', '1', '3bb', '3', '2', '4b', '4'],
... ['4bb', '1', '3bb', '2', '3', '4b', '4']]
>>>
>>> setlst = {tuple(x[-3:]) for x in lst}
>>> newlst = list(map(list, setlst))
>>> newlst
[['2', '4b', '4'], ['3', '4b', '4']]