답변:
파이썬 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
이지만 map
Python 3.x에서 변경되었으므로 Python 2.x에서만 작동합니다.
>>> map(None, a, b, c)
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
itertools
어쨌든 내장 C 모듈입니다.
Python 2.6x의 경우 itertools
module을 사용하십시오 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]