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

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

Linda Hamilton
リリース: 2024-12-07 11:21:11
オリジナル
905 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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