> 백엔드 개발 > 파이썬 튜토리얼 > Python 목록에서 연속 숫자 그룹을 식별하는 방법은 무엇입니까?

Python 목록에서 연속 숫자 그룹을 식별하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-07 11:21:11
원래의
905명이 탐색했습니다.

How to Identify Consecutive Number Groups in a Python List?

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

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿