У меня есть несколько больших списков. Я хотел бы объединить их в одноконфессиональный список. Например,
small_lists = [[{'value1':1}]*100000,[{'value2':2}]*100000,[{'value3':3}]*100000]
combined_list = []
for small_list in small_lists:
combined_list.extend(small_list)
Есть ли более быстрый способ, чем указано выше?
numpy предлагается в нескольких ответах, но для меня он кажется значительно медленнее. Я что-то делаю не так?
import time
import numpy as np
small_lists = [[{'value1':1}]*10000000,[{'value2':2}]*10000000,[{'value3':3}]*10000000]
start = time.time()
np_list = np.array(small_lists).flatten()
print("{} sec".format(time.time() - start))
print(len(np_list))
start = time.time()
combined_list = []
for small_list in small_lists:
combined_list.extend(small_list)
print("{} sec".format(time.time() - start))
print(len(combined_list))
from functools import reduce
start = time.time()
reduce_list = reduce(lambda x, y: x+y, small_lists)
print("{} sec".format(time.time() - start))
print(len(reduce_list))
Результат: 2,01335906982 se c для numpy, 0,113998889923 se c для расширения, 0,299326896667 se c для уменьшения. extend, безусловно, самый быстрый.