zip() 機能の拡張: 最長の長さへのパディング
Python の組み込み zip() 関数は複数の反復可能オブジェクトの要素をペアにしますが、結果を最短の反復可能長に切り捨てます。最長の入力に合わせて None 値を埋め込む、より包括的な zip が必要な場合は、次の解決策を検討してください。
Python 3: itertools.zip_longest
Python の場合3 では、itertools は zip_longest() 関数を提供します。最長の入力の長さに一致するように結果リストを拡張します。
import itertools 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 またはマップ None
Python 2 では、次を使用できます。 itertools.izip_longest (Python 2.6 で導入) または None.
from itertools import izip_longest a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(izip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)] map(None, a, b, c) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
以上がPython の zip() 関数を拡張して、長さが等しくないイテラブルを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。