ホームページ >バックエンド開発 >Python チュートリアル >Python リスト内の要素のペアまたはグループを反復するにはどうすればよいですか?

Python リスト内の要素のペアまたはグループを反復するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-15 21:20:13607ブラウズ

How Can I Iterate Over Pairs or Groups of Elements in a Python List?

リスト内の 2 つの要素ごとに反復処理する

Python では、リストの反復処理には、多くの場合、for ループまたはリスト内包表記の使用が含まれます。ただし、2 つの要素すべてに一緒にアクセスする必要がある場合は、標準メソッドでは不十分な場合があります。

リスト内の要素のすべてのペアを反復するには、pairwise() を利用できます。実装:

def pairwise(iterable):
    "s -> (s0, s1), (s2, s3), (s4, s5), ..."
    a = iter(iterable)
    return zip(a, a)

l = [1, 2, 3, 4, 5, 6]

for x, y in pairwise(l):
    print(f"{x} + {y} = {x + y}")

この関数はリストを 2 回反復し、すべての要素を次の要素とペアにします。次のような出力が生成されます:

1 + 2 = 3
3 + 4 = 7
5 + 6 = 11

より一般的な解決策として、n 個の要素のグループを反復処理できる grouped() 関数を検討してください。

def grouped(iterable, n):
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return zip(*[iter(iterable)] * n)

for x, y in grouped(l, 2):
    print(f"{x} + {y} = {x + y}")

この関数はリストとグループ サイズを引数として受け取り、要素のグループを生成する反復子を返します。たとえば、grouped([1, 2, 3, 4, 5, 6], 3) を呼び出すと、次の結果が得られます。

(1, 2, 3)
(4, 5, 6)

Python 2 では、 を使用できます。互換性を保つため、zip の代わりに izip を使用します。

これらはメソッドは、リスト内の要素を反復処理するための効率的かつ柔軟な方法を提供し、必要に応じて要素をペアまたはグループで処理できるようにします。

以上がPython リスト内の要素のペアまたはグループを反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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