Хотя zip(*seq)
очень полезно, оно может быть неподходящим для очень длинных последовательностей, так как создаст набор значений для передачи. Например, я работал с системой координат с более чем миллионом записей найти это значительно быстрее, чтобы создавать последовательности напрямую.
Общий подход будет выглядеть примерно так:
from collections import deque
seq = ((a1, b1, …), (a2, b2, …), …)
width = len(seq[0])
output = [deque(len(seq))] * width # preallocate memory
for element in seq:
for s, item in zip(output, element):
s.append(item)
Но, в зависимости от того, что вы хотите сделать с результатом, выбор коллекции может иметь большое значение. В моем реальном случае использования наборы без внутреннего цикла заметно быстрее всех других подходов.
И, как уже отмечали другие, если вы делаете это с наборами данных, может иметь смысл вместо этого использовать коллекции Numpy или Pandas.