2013-06-11 4 views
15

AngesichtsWas ist der schnellste Weg, um zwei Listen in Python zusammenzuführen?

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

Was ist der schnellste Weg, die folgend in Python zu erreichen?

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

Bitte beachten Sie, dass es viele Möglichkeiten gibt, zwei Listen in Python zusammenzuführen. Ich bin auf der Suche nach dem effizientesten Weg.

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

Danke für alle Antworten. Ich habe die folgenden Ideen ausprobiert und hier ist mein Verständnis.

CODE

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 

OUTPUT

19999999 
0.125061035156 
19999999 
1.02858018875 
19999999 
0.03928399086 

Also, wenn jemand list_1/list_2 in der Frage nicht stört Wiederverwendung dann verlängern ist der Weg zu gehen. Auf der anderen Seite ist "+" der schnellste Weg.

Ich bin mir über andere Optionen nicht sicher.

Nochmals vielen Dank :-)

+3

diesen Beitrag anzeigen -> http://stackoverflow.com/questions/1720421/merge-two-lists-in-python –

+3

Sie‘ nicht wirklich hier verschmelzen, du verkettet ... Ist das wirklich was du willst? Was soll man mit 'list1 = [1,2,3,5] bekommen? list2 = [4,5,6,7] '? – mgilson

+0

Sie können nicht schneller als 'list_1 + list_2' – jamylak

Antwort

7

list_1 + list_2 es tut. Beispiel -

>>> 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

Sie können einfach verwenden Verkettung:

list = list_1 + list_2 

Wenn Sie brauchen, um list_1 nicht zu halten um, Sie können es einfach ändern:

list_1.extend(list_2) 
+0

Was passiert, wenn list_1 leer ist (oder wenn list_2 leer ist oder beides)? – hepcat72

+1

@ hepcat72 Nichts besonderes, es wird das richtige Ergebnis erzeugen. – phant0m

+0

Was ist das korrekte Ergebnis? Wenn list_1 leer ist und list_2 eine einzelne Zeichenkette "a" enthält, würde die Liste [undef, "a"] oder nur ["a"] enthalten? – hepcat72

-1

Manchmal werden Sie vielleicht finden Duplikate in Ihrer endgültigen zusammengeführten Liste. Um zu vermeiden, dass Sie die eingebaute in set() Funktion nutzen zu können:

final_list = list(set(list_1 + list_2))

Verwandte Themen