我想在许多列表中选择唯一值,但我不知道如何做到这一点:
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)
顺便说一句,我的真实节目中有数千个列表。
非常感谢。
答案 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