2013-06-11 3 views
15

Учитывая,Каков самый быстрый способ слияния двух списков в python?

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

Что такое быстрый способ для достижения следующих в Python?

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

Обратите внимание, что может быть много способов объединить два списка в python. Я ищу наиболее эффективный способ времени.

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

Спасибо за все ответы. Получив ваши идеи, я попробовал следующее, и вот мое понимание.

КОД

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 

ВЫВОД

19999999 
0.125061035156 
19999999 
1.02858018875 
19999999 
0.03928399086 

Так что, если кто-то не мешает повторному использованию list_1/list_2 в вопросе, то расширить это путь. С другой стороны, «+» - самый быстрый способ.

Я не уверен в других вариантах.

Еще раз спасибо :-)

+3

Посмотреть этот пост -> http://stackoverflow.com/questions/1720421/merge-two-lists-in-python –

+3

You» я действительно не сливаюсь здесь, вы конкатенируете ... Это действительно то, что вы хотите? Что вы должны получить с помощью 'list1 = [1,2,3,5]; list2 = [4,5,6,7] '? – mgilson

+0

Вы не можете получить быстрее, чем 'list_1 + list_2' – jamylak

ответ

7

list_1 + list_2 это делает. Пример -

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

Вы можете просто использовать конкатенации:

list = list_1 + list_2 

Если вам не нужно держать list_1 вокруг, вы можете просто изменить его:

list_1.extend(list_2) 
+0

Что произойдет, если list_1 пуст (или если list_2 пуст или и то, и другое)? – hepcat72

+1

@ hepcat72 Ничего особенного, это даст правильный результат. – phant0m

+0

Каков правильный результат? Если list_1 пуст, а list_2 содержит одну строку «a», список будет содержать [undef, «a»] или просто [«a»]? – hepcat72

-1

Иногда вы можете найти дубликатов в вашем конечном объединенном списке. Чтобы избежать этого, вы можете использовать встроенный в set() функции:

final_list = list(set(list_1 + list_2))

Смежные вопросы