목록에서 연속 숫자 그룹을 식별하는 것은 다양한 프로그래밍 시나리오에서 발생하는 일반적인 작업입니다.
다행히도 Python의 내장 기능과 모듈은 이 문제에 대한 우아한 솔루션을 제공합니다. 한 가지 접근 방식은 groupby() 함수와 람다 표현식을 활용합니다.
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))
이 스니펫은 인덱스와 값의 차이를 기준으로 연속된 숫자를 그룹화하여 각 그룹 내의 요소가 연속되도록 합니다.
원하는 출력이 연속 숫자의 범위를 나타내는 튜플 목록인 경우 다음과 같이 수정할 수 있습니다. made:
ranges = [] for k, g in groupby(enumerate(data), lambda (i, x): i - x): group = map(itemgetter(1), g) ranges.append((group[0], group[-1]))
또는 루프와 목록 이해를 사용하여 사용자 정의 솔루션을 구현할 수 있습니다.
ranges = [] for i in range(len(data)): if i == len(data) - 1 or data[i] + 1 != data[i + 1]: ranges.append((data[i], data[i])) else: start = i while i + 1 < len(data) and data[i] + 1 == data[i + 1]: i += 1 ranges.append((data[start], data[i]))
이 접근 방식은 목록을 반복합니다. , 각 연속 그룹의 시작 및 끝 인덱스를 식별하고 이를 범위 목록에 추가합니다.
위 내용은 Python 목록에서 연속 숫자 그룹을 어떻게 식별할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!