Оновлення : Згладжування за допомогою розширення, але без розуміння та без використання списку як ітератора (найшвидший)
Перевіривши наступну відповідь на це, що забезпечило швидше рішення за допомогою розуміння списку, dual forя трохи підправив, і тепер він працює ефективніше, спочатку виконання списку (...) тягнуло великий відсоток часу, потім змінювало список розуміння для простої петлі, поголеної також трохи більше.
Новим рішенням є:
l = []
for row in output: l.extend(row)
Старіші:
Зрівняння з картою / розширенням:
l = []
list(map(l.extend, output))
Вирівнювання з розумінням списку замість карти
l = []
list(l.extend(row) for row in output)
трохи часу для нового розширення та вдосконалення, отриманого шляхом простого видалення списку (...) для [...]:
import timeit
t = timeit.timeit
o = "output=list(zip(range(1000000000), range(10000000))); l=[]"
steps_ext = "for row in output: l.extend(row)"
steps_ext_old = "list(l.extend(row) for row in output)"
steps_ext_remove_list = "[l.extend(row) for row in output]"
steps_com = "[item for sublist in output for item in sublist]"
print("new extend: ", t(steps_ext, setup=o, number=10))
print("old extend w []: ", t(steps_ext_remove_list, setup=o, number=10))
print("comprehension: ", t(steps_com, setup=o, number=10,))
print("old extend: ", t(steps_ext_old, setup=o, number=10))
>>> new extend: 4.502427191007882
>>> old extend w []: 5.281140706967562
>>> comprehension: 5.54302118299529
>>> old extend: 6.840151469223201
[(12.2817, 12.2817), (0, 0), (8.52, 8.52)]це вже матриця 3x2!? чи я щось пропустив?