Zip をパッドまで最大長まで拡張する
Zip は、複数の反復可能オブジェクトを結合する Python の組み込み関数です。ただし、最短の反復可能長で停止します。最長の反復可能長に一致するように結果をパディングしたい場合はどうすればよいでしょうか?
解決策
Python 3 では、itertools.zip_longest がこの機能を提供します。すべてのイテラブルを評価し、デフォルトで None でパディングし、アラインメントを維持します。
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(itertools.zip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
fillvalue パラメーターを使用してパディング値をカスタマイズできます。
list(itertools.zip_longest(a, b, c, fillvalue='foo')) # [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Python 2 の場合、次のことができます。 itertools.izip_longest (Python 2.6) を使用するか、None:
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] map(None, a, b, c) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]でマップします。
以上がPython の Zip 関数を最長の反復可能長までパディングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。