ホームページ >バックエンド開発 >Python チュートリアル >Python の zip() の結果を最長の入力の長さに合わせてパディングする方法は?

Python の zip() の結果を最長の入力の長さに合わせてパディングする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-28 21:05:11767ブラウズ

How to Pad the Results of Python's zip() to the Length of the Longest Input?

Python で圧縮して最長の長さにパディングする方法

Python では、zip() 関数を使用して 2 つの要素を結合します。またはそれ以上の反復可能なオブジェクト。ただし、zip() は最短の入力の長さのみを考慮します。最長の入力の長さに合わせて結果をパディングしたい場合はどうすればよいでしょうか?

itertools.zip_longest

Python 3 では、 itertools.zip_longest() 関数がこれを提供します。機能性。複数のイテラブルを受け取り、イテラブルからの要素を含むタプルを生成するイテレータを返します。None 値で短いイテラブルをパディングします。

import itertools

a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

result = list(itertools.zip_longest(a, b, c))
print(result)
# Output: [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

fillvalue パラメータ

None の代わりに使用する fillvalue パラメータを指定しますpadding.

result = list(itertools.zip_longest(a, b, c, fillvalue='foo'))
print(result)
# Output: [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]

Python 2 の代替手段

Python 2 には、次の 2 つのオプションがあります。

  1. map(None) , ...): この Python 2 固有のマップ機能は、次と同じ結果を達成できます。 zip_longest().
result = map(None, a, b, c)
print(list(result))
# Output: [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
  1. itertools.izip_longest: この関数は Python 2.6 で導入され、zip_longest().

以上がPython の zip() の結果を最長の入力の長さに合わせてパディングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。