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

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

Susan Sarandon
リリース: 2024-12-25 10:53:50
オリジナル
182 人が閲覧しました

How Can I Iterate Over Lists in Pairs or Groups in Python?

リストのペアごとの反復

リストを操作するときの一般的な要件は、ペアの要素の反復です。ただし、Python の標準の for ループとリスト内包表記には、ペアごとのトラバーサル用の組み込みソリューションが提供されていません。

ペアごとの実装

この制限を克服するには、カスタム関数の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("{} + {} = {}".format(x, y, x + y))
ログイン後にコピー

出力:

1 + 2 = 3
3 + 4 = 7
5 + 6 = 11
ログイン後にコピー

一般化グループ化

反復処理が必要な場合任意のサイズのグループ内の要素については、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("{} + {} = {}".format(x, y, x + y))
ログイン後にコピー

Mypy による型チェック

実行したい Python 3 ユーザー向けMypy による型チェックでは、grouped() 関数に次のような注釈を付けることができます。以下:

from typing import Iterable, Tuple, TypeVar

T = TypeVar("T")

def grouped(iterable: Iterable[T], n=2) -> Iterable[Tuple[T, ...]]:
    """s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), ..."""
    return zip(*[iter(iterable)] * n)
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート