Donné,
list_1 = [1,2,3,4]
list_2 = [5,6,7,8]
Quel est le moyen le plus rapide pour réaliser ce qui suit en python?
list = [1,2,3,4,5,6,7,8]
Veuillez noter qu'il peut y avoir plusieurs façons de fusionner deux listes en python. Je recherche le moyen le plus efficace en termes de temps.
[EDIT] ++++++++++++++++++++++++++++++++++++++++++++++ [EDIT]
Merci pour toutes les réponses. En obtenant vos idées, j'ai essayé ce qui suit et voici ma compréhension.
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
PRODUCTION
19999999
0.125061035156
19999999
1.02858018875
19999999
0.03928399086
Donc, si quelqu'un ne prend pas la peine de réutiliser list_1/list_2 dans la question, alors étendre est le chemin à parcourir. D'autre part, "+" est le moyen le plus rapide.
Je ne suis pas sûr cependant d'autres options.
Merci encore :-)
Vous pouvez simplement utiliser la concaténation:
list = list_1 + list_2
Si vous n'avez pas besoin de conserver list_1, vous pouvez simplement le modifier:
list_1.extend(list_2)
list_1 + list_2
le fait. Exemple -
>>> list_1 = [1,2,3,4]
>>> list_2 = [5,6,7,8]
>>> list_1 + list_2
[1, 2, 3, 4, 5, 6, 7, 8]
Si vous utilisez python 3, il existe une autre façon de le faire et un peu plus rapidement (testé uniquement sur python 3.7)
[*list1, *list2]
Référence
from timeit import timeit
x = list(range(10000))
y = list(x)
def one():
x + y
def two():
[*x, *y]
print(timeit(one, number=1000, globals={'x':x, 'y': y}))
print(timeit(two, number=1000, globals={'x':x, 'y': y}))
0.10456193100253586
0.09631731400440913