Czy istnieje funkcja wbudowana, która działa podobnie, zip()
ale będzie wypełniać wyniki tak, że długość wynikowej listy będzie długością najdłuższego wejścia, a nie najkrótszego wejścia?
>>> a = ['a1']
>>> b = ['b1', 'b2', 'b3']
>>> c = ['c1', 'c2']
>>> zip(a, b, c)
[('a1', 'b1', 'c1')]
>>> What command goes here?
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
itertools
i tak jest wbudowanym modułem C.W przypadku Pythona 2.6x użyj
itertools
modułówizip_longest
.W przypadku Pythona 3 użyj
zip_longest
zamiast tego (bez wiodącychi
).źródło
six.moves.zip_longest
zamiast tego.Rozwiązanie non itertools w Pythonie 3:
źródło
non itertools Moje rozwiązanie dla Pythona 2:
źródło
Używam tablicy 2d, ale koncepcja jest podobna w przypadku Pythona 2.x:
źródło