蟒蛇。从列表列表中删除重复的元素

时间:2016-04-08 03:38:32

标签: python

我有一个包含三个级别的列表,其中包含不同数量的元素,如下所示:

>>> print some_list
[ [a], [[b,c],[b,c]], [[b,c],[b,c]], [d], [[e,f],[e,g]], [h,j,k,l,m] ]

如何从中删除重复的元素? 此外,我想要一个具有一个级别和所有唯一元素的输出列表。 我已尝试使用set()函数,但它会返回错误输出。

3 个答案:

答案 0 :(得分:0)

如果您只想要一个包含所有非重复元素的(单个平面)列表,则可以执行此操作。虽然我确定这是重复的。

import itertools
print(list(set(itertools.chain(*itertools.chain.from_iterable(some_list)))))

结果:

>>> some_list = [ ['a'], [['b','c'],['b','c']], [['b','c'],['b','c']], ['d'], [['e','f'],['e','g']], ['h','j','k','l','m'] ]

>>> print(list(set(itertools.chain(*itertools.chain.from_iterable(some_list))))

['f', 'm', 'k', 'b', 'd', 'j', 'a', 'c', 'e', 'g', 'h', 'l']

答案 1 :(得分:0)

post中来自HYRY的已使用的实用程序函数。

一旦你从列表转换为元组,你的设定实际上是有效的:

def list2tuple(a):
    return tuple((list2tuple(x) if isinstance(x, list) else x for x in a))
def tuple2list(a):
    return list((tuple2list(x) if isinstance(x, tuple) else x for x in a))

l1=[ ['a'], [['b','c'],['b','c']], [['b','c'],['b','c']], ['d'], [['e','f'],['e','g']], ['h','j','k','l','m'] ]
#tuples are hashable, but lists aren't, so you have to convert to a tuple first
print  tuple2list(set(list2tuple(l1)))

输出:

[['d'], ['a'], ['h', 'j', 'k', 'l', 'm'], [['e', 'f'], ['e', 'g']], [['b', 'c'], ['b', 'c']]]

答案 2 :(得分:0)

首先展平你的清单,然后使用set():

r.db('locations').table('instagram').union(r.db('locations').table('twitter'))

输出:[' a',''' c',' d',' e' ,''' h',' j',' k',' l',' m']

相关问题