2013-06-11 10 views
15

Zważywszy,Jaki jest najszybszy sposób na połączenie dwóch list w python?

list_1 = [1,2,3,4] 
list_2 = [5,6,7,8] 

Co jest najszybszym sposobem do osiągnięcia następujących celów w Pythonie?

list = [1,2,3,4,5,6,7,8] 

Należy pamiętać, że istnieje wiele sposobów scalania dwóch list w pythonie. Szukam najbardziej efektywnego czasu.

[EDYTOWANIE] +++++++++++++++++++++++++++++++++++++++++++++++++++++ + [EDIT]

Dzięki za wszystkie odpowiedzi. Biorąc pod uwagę twoje pomysły, próbowałem następujących rzeczy i tutaj jest moje zrozumienie.

KOD

import time 

c = list(range(1,10000000)) 
c_n = list(range(10000000, 20000000)) 

start = time.time() 
c = c+c_n 
print len(c) 
print time.time() - start 

c = list(range(1,10000000)) 
start = time.time() 
for i in c_n: 
    c.append(i) 
print len(c) 
print time.time() - start 

c = list(range(1,10000000)) 
start = time.time() 
c.extend(c_n) 
print len(c) 
print time.time() - start 

WYJŚCIE

19999999 
0.125061035156 
19999999 
1.02858018875 
19999999 
0.03928399086 

Tak więc, jeśli ktoś nie przeszkadza ponowne list_1/list_2 w pytaniu następnie przedłużyć jest droga. Z drugiej strony, najszybszym sposobem jest "+".

Nie jestem jednak pewien innych opcji.

Dzięki ponownie :-)

+3

Zobacz ten post -> http://stackoverflow.com/questions/1720421/merge-two-lists-in-python –

+3

you” tak naprawdę nie łączę się tutaj, łączycie ... Czy to naprawdę tego chcesz? Co powinieneś dostać z 'list1 = [1,2,3,5]; lista2 = [4,5,6,7] '? – mgilson

+0

Nie można uzyskać szybciej niż "list_1 + lista_2" – jamylak

Odpowiedz

7

list_1 + list_2 robi. Przykład -

>>> list_1 = [1,2,3,4] 
>>> list_2 = [5,6,7,8] 
>>> list_1 + list_2 
[1, 2, 3, 4, 5, 6, 7, 8] 
20

można po prostu użyć konkatenacji:

list = list_1 + list_2 

Jeśli nie trzeba zachować list_1 wokół, można po prostu zmodyfikować go:

list_1.extend(list_2) 
+0

Co się stanie, jeśli lista_1 jest pusta (lub czy lista_2 jest pusta lub obie)? – hepcat72

+1

@ hepcat72 Nic specjalnego, da prawidłowy wynik. – phant0m

+0

Jaki jest prawidłowy wynik? Jeśli lista_1 jest pusta, a lista_2 zawiera pojedynczy ciąg "a", czy lista zawiera [undef, "a"] lub tylko ["a"]? – hepcat72

-1

Czasem może się okazać, duplikaty na końcowej scalonej liście. Aby tego uniknąć można użyć wbudowanej set() funkcję:

final_list = list(set(list_1 + list_2))