Załóżmy, że mam wiele list par (int, str), niekoniecznie tej samej długości. Jedynym ograniczeniem jest to, że listy są sortowane w kolejności rosnącej ich części całkowitych:Powtarzanie wielu sortowanych list w kolejności
a = [(1, 'a'), (4, 'a'), (6, 'b'), (7, 'c'), (12, 'a')]
b = [(5, 'd'), (10, 'c'), (11,'e')]
c = [(0, 'b'), (3, 'd')]
Co chciałbym zrobić, to emitują elementy ciągów w kolejności, w jakiej ich odpowiednie elementy całkowite występują czyli w tym sprawa:
(0, 'b'), (1, 'a'), (3, 'd'), (4, 'a'), ...
Zastanawiam się, czy istnieje oczywista (miły + pythonic) sposób to zrobić tylko za pomocą iteratorów z a
, b
i c
? Przyjrzałem się itertools
, ale nie mogę od razu zobaczyć, jak korzystać z funkcji w tym przypadku. Wykazy a
, b
, c
może być bardzo duży, więc chciałbym to zrobić bez czytania ich w pamięci, a następnie sortowania ...
Nie można tego zrobić bez przeczytania ich wszystkich. Jeśli nie przeczytasz ich wszystkich, nie będziesz wiedział, czy ten, którego nie czytałeś, powinien być pierwszy. Ponadto, jeśli są listami, i tak są już w pamięci. – BrenBarn