与えられた、
list_1 = [1,2,3,4]
list_2 = [5,6,7,8]
Pythonで次を達成するための最速の方法とは何ですか?
list = [1,2,3,4,5,6,7,8]
Pythonの2つのリストをマージする方法はたくさんあることに注意してください。私は最も時間効率の良い方法を探しています。
[編集] ++++++++++++++++++++++++++++++++++++++++++++++ [編集]
すべての答えをありがとう。あなたのアイデアを得て、私は以下を試しました、そして、ここに私の理解があります。
コード
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を再利用することを気にしないのであれば、extendが道です。一方、"+"が最速の方法です。
しかし、他のオプションについてはわかりません。
再度、感謝します :-)
単に連結を使用できます:
list = list_1 + list_2
List_1を保持する必要がない場合は、変更するだけです。
list_1.extend(list_2)
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]
python 3を使用している場合、これを行う方法がもう1つあり、少し高速です(python 3.7でのみテスト済み)
[*list1, *list2]
ベンチマーク
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