연속 숫자 그룹 식별
Python에서는 내장된 itertools.groupby( ) 기능. 작동 방식은 다음과 같습니다.
itertools.groupby() 함수
groupby() 함수는 키 함수를 기반으로 iterable의 요소를 그룹화합니다. 이 경우 요소의 인덱스와 해당 값 간의 차이를 계산하는 키 함수를 정의합니다. 연속된 숫자는 동일한 키를 가지므로 그룹화됩니다.
코드 구현:
샘플 목록 [2, 3, 4, 5, 12, 13]을 고려하세요. , 14, 15, 16, 17, 20]. 아래 코드는 연속된 숫자 그룹을 식별하기 위해 groupby()를 활용합니다:
from itertools import groupby from operator import itemgetter data = [2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20] ranges = [] for k, g in groupby(enumerate(data), lambda (i, x): i - x): group = map(itemgetter(1), g) if len(group) > 1: ranges.append(tuple(group[0], group[-1])) else: ranges.append(group[0])
주요 함수 이해:
람다 함수(lambda (i, x): i - x)는 요소의 인덱스(i)와 값(x) 간의 차이를 계산합니다. 이 차이를 통해 연속된 숫자를 그룹화할 수 있습니다. 예를 들어, 숫자 2의 차이는 0이고, 숫자 12의 차이는 10입니다.
그룹화된 요소 처리:
각 요소에 대해 key(차이), groupby()는 해당 그룹화된 요소를 포함하는 생성기 객체(g)를 생성합니다. 이 생성기를 map() 및 itemgetter()를 사용하여 목록으로 변환하여 요소 값만 추출합니다.
결과 필터링 및 추가:
길이를 확인합니다. 연속된 숫자를 나타내는 1보다 큰지 확인하기 위한 그룹화된 요소입니다. 그렇다면 그룹의 첫 번째 요소와 마지막 요소의 튜플을 범위 목록에 추가합니다. 개별 숫자의 경우 숫자 자체를 추가합니다.
출력:
범위 목록에는 다음과 같은 연속 숫자 그룹이 포함됩니다.
[(2, 5), (12, 17), 20]
위 내용은 Python 목록에서 연속 숫자 그룹을 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!