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

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

Linda Hamilton
Linda Hamilton원래의
2024-12-07 11:21:11945검색

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

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