목록에서 연속 숫자 그룹 식별
Python에서는 다양한 방법을 통해 목록에서 연속 숫자 그룹을 식별할 수 있습니다. 사용 가능한 옵션에 대한 설명은 다음과 같습니다.
1. Python Docs의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!