>백엔드 개발 >파이썬 튜토리얼 >Python 목록에서 연속 숫자 그룹을 어떻게 식별할 수 있습니까?

Python 목록에서 연속 숫자 그룹을 어떻게 식별할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-30 01:52:08624검색

How Can I Identify Consecutive Number Groups in a Python List?

목록에서 연속 숫자 그룹 식별

목록에서 연속 숫자 그룹을 식별하는 것은 다양한 프로그래밍 시나리오에서 발생하는 일반적인 작업입니다.

Python의 내장 도구

다행히도 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.