답변:
파이썬 3에서는 사용할 수 있습니다 itertools.zip_longest
>>> list(itertools.zip_longest(a, b, c))
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
매개 변수 None를 사용하여 와 다른 값으로 채울 수 있습니다 fillvalue.
>>> list(itertools.zip_longest(a, b, c, fillvalue='foo'))
[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
파이썬이 사용하면 중 하나를 사용할 수 있습니다 itertools.izip_longest(파이썬 2.6+)하거나 사용할 수 있습니다 map로 None. 약간 알려진 기능map 이지만 mapPython 3.x에서 변경되었으므로 Python 2.x에서만 작동합니다.
>>> map(None, a, b, c)
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
itertools어쨌든 내장 C 모듈입니다.
Python 2.6x의 경우 itertoolsmodule을 사용하십시오 izip_longest.
파이썬 3의 경우 zip_longest대신에 선행을 사용 i하십시오.
>>> list(itertools.izip_longest(a, b, c))
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
six.moves.zip_longest대신 사용할 수 있습니다 .
2d 배열을 사용하고 있지만 파이썬 2.x를 사용하는 개념은 비슷합니다.
if len(set([len(p) for p in printer])) > 1:
printer = [column+['']*(max([len(p) for p in printer])-len(column)) for column in printer]