ホームページ >バックエンド開発 >Python チュートリアル >Python リスト内の連続する番号グループを識別する方法

Python リスト内の連続する番号グループを識別する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-07 11:21:11904ブラウズ

How to Identify Consecutive Number Groups in a Python List?

リスト内の連続する番号グループの識別

Python では、リスト内の連続する番号のグループをさまざまな方法で識別できます。利用可能なオプションについては次のとおりです。

1. Python ドキュメントからの GroupBy レシピの使用:

Python は、このタスクのエレガントなレシピを提供します。 GroupBy は列挙されたリスト項目を繰り返し、連続する番号をグループ化します:

from operator import itemgetter
from itertools import groupby

data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17]
for k, g in groupby(enumerate(data), lambda (i,x):i-x):
    print(map(itemgetter(1), g))

これにより、連続する番号のグループが出力されます:

[2, 3, 4, 5]
[12, 13, 14, 15, 16, 17]

2。 GroupBy 出力の変更:

要求されたタプル形式を取得するには、次のように出力を変更できます:

ranges = []
for k, g in groupby(enumerate(data), lambda (i,x):i-x):
    group = map(itemgetter(1), g)
    ranges.append((group[0], group[-1]))

これにより、次の出力が行われます:

[(2, 5), (12, 17)]

3.カスタム実装:

独自のカスタム ソリューションを実装することもできます:

ranges = []
for key, group in groupby(enumerate(data), lambda (index, item): index - item):
    group = map(itemgetter(1), group)
    if len(group) > 1:
        ranges.append(xrange(group[0], group[-1]))
    else:
        ranges.append(group[0])

個人番号の処理:

個人番号を返すには個々の要素として、カスタム実装コードを次のように変更するだけです:

...
    if len(group) > 1:
        ranges.append(xrange(group[0], group[-1]+1))
    else:
        ranges.append(group[0])

以上がPython リスト内の連続する番号グループを識別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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