リスト内の連続する番号を識別する
このタスクは、リストを連続する番号のグループに分割することです。各グループには連続する番号のみを含める必要があります。出力では、個々の数値を保持する必要があり、範囲に結合しないでください。
解決策:
Python では、組み込みの groupby 関数をカスタム キーとともに使用できます。達成するthis:
from itertools import groupby from operator import itemgetter 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])
説明:
サンプル出力:
data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20] ranges = [xrange(2, 5), xrange(12, 17), 20]
以上がPython リスト内の連続する番号を識別してグループ化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。