2014-02-06 5 views
0

Я хотел бы, чтобы выбрать уникальное значение во многих списках, но я не знаю, как это сделать:Выберите уникальное значение во многих списках в питоне

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) 

Кстати, в моей реальной программе тысячи списков.

спасибо.

+2

Я думаю, что вы ищете 'Set()' – monkut

+1

Так много способов сделать это с помощью 'установить()', так много неправильных способов сделать это без ' установить() '. –

ответ

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] 

UPDATE (ответ на комментарий)

Если у вас есть список списков, используйте itertools.chain.from_iterable:

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

Как я могу сделать это с тысячами списков? –

+0

@ Джимми, я обновляю ответ. – falsetru

+0

Чтобы дать понять Jimmy, если 1000 единиц списков агрегируются в некотором итерируемом (список, a все), называемом my_lists, тогда выполните: list (set (itertools.chain (my_lists))) – Potrebic

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 
Смежные вопросы