我的列表中有一些相同的列表a:
a = [[a],[a],[b],[b],[c],[c]]
如何删除相等的列表,以便我有以下内容:
a = [[a],[b],[c]]
我尝试用套装做但但它不起作用:
my_set = set()
for elem in a:
my_set.add(elem)
for x in my_set:
print(x)
答案 0 :(得分:5)
你可以试试这个:
a = [['a'],['a'],['b'],['b'],['c'],['c']]
b = list()
for item in a:
if item not in b:
b.append(item)
答案 1 :(得分:3)
numpy
是其中一个选项
import numpy as np
a = [['a'],['a'],['b'],['b'],['c'],['c']]
np.unique(a).tolist() # ['a', 'b', 'c']
答案 2 :(得分:2)
如果您不介意使用itertools
:
[x for x,_ in itertools.groupby(sorted(a))]
#[['a'], ['b'], ['c']]
如果这样做,请将列表转换为元组,创建一组,然后转换回列表:
list(map(list, set(map(tuple, a))))
#[['b'], ['c'], ['a']]
答案 3 :(得分:0)
@DYZ答案的变体,适用于包含相同元素的列表,无论顺序如何:
[x for x,_ in itertools.groupby(map(set, a))]
例如:
>>> a = [['a'],['a'],['b'],['b'],['c', 'a'],['a', 'c']]
>>> [list(x) for x,_ in itertools.groupby(map(set, a))]
[['a'], ['b'], ['a', 'c']]
如果['c', 'a']
和['a', 'c']
不相同(请参阅@DYZ下面的评论),那么您可以使用set()
执行以下操作:
map(list, set(map(tuple, a)))
答案 4 :(得分:0)
如果['c', 'a']
和['a', 'c']
不相等,那么您可以使用set()
执行以下操作:
map(list, set(map(tuple, a)))
答案 5 :(得分:0)
您可以改用列表理解。
d = [it for i, it in enumerate(a) if it not in a[0:i]] print(d)