在python中的许多列表中选择唯一值

时间:2014-02-06 06:02:26

标签: python

我想在许多列表中选择唯一值,但我不知道如何做到这一点:

a = [1,2,3,4,5]
b = [2,3,4,5,6] 
c = [5,6,7,8,9]

我想制作一个新的清单[1,2,3,4,5,6,7,8,9]

我知道可以使用以下方法,但我正在寻找更快的方法来做到这一点。

for i in (a, b, c):
    for j in EachValueInEachList:
        NewList.append(j)
list(set(NewList)

顺便说一句,我的真实节目中有数千个列表。

非常感谢。

3 个答案:

答案 0 :(得分:6)

>>> a = [1,2,3,4,5]
>>> b = [2,3,4,5,6]
>>> c = [5,6,7,8,9]
>>> list(set(a + b + c))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

要避免创建临时列表,请使用itertools.chain

>>> import itertools
>>> list(set(itertools.chain(a, b, c)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

更新(回复评论)

如果您有列表列表,请使用itertools.chain.from_iterable

list(set(itertools.chain.from_iterable(a_list_of_lists)))

答案 1 :(得分:1)

>>> list(set(a) | set(b) | set(c))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 2 :(得分:0)

如果长列表,

numpy是最佳选择。

import numpy as np
import time
start_time = time.time()
a = np.array([[1,2,3,4,5], [2,3,4,5,6],[5,6,7,8,9]])
print np.unique(a).tolist()
print time.time() - start_time  # Execution time

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
0.000999927520752