同じように動作するが、結果のリストの長さが最短入力ではなく最長zip()
入力の長さになるように結果を埋め込む組み込み関数はありますか?
>>> 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)]
ベストアンサー1
Python 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')]
Python 2 では、 (Python 2.6+) を使用するか、で をitertools.izip_longest
使用できます。これは (のあまり知られていない機能ですが、Python 3.x で変更されたため、これは Python 2.x でのみ機能します)。map
None
map
map
>>> map(None, a, b, c)
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]