>  기사  >  백엔드 개발  >  배열에 대한 이러한 요구 사항을 우아하게 구현하는 방법은 무엇입니까?

배열에 대한 이러한 요구 사항을 우아하게 구현하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-08-18 09:16:23952검색

배열이 있습니다[1,2,3,7,9,10,11,16]

빠르고 우아하게 얻는 방법을 알려주세요.1-3,7,9-11,16

결과는?

이것은 배열을 먼저 정렬한 다음 현재 값이 이전 값보다 +1인지 확인하기 위해 루프를 수행한 다음 결과에 따라 문자열을 연결하는 것이라고 생각합니다. 좋고 우아한 방법이 있나요?

감사합니다.

답글 내용:

배열이 있습니다[1,2,3,7,9,10,11,16]

빠르고 우아하게 얻는 방법을 알려주세요.1-3,7,9-11,16

결과는?

이것은 배열을 먼저 정렬한 다음 현재 값이 이전 값보다 +1인지 확인하기 위해 루프를 수행한 다음 결과에 따라 문자열을 연결하는 것이라고 생각합니다. 좋고 우아한 방법이 있나요?

감사합니다.

Python 버전은 다음과 같습니다(PHP를 몰라 죄송합니다).

<code class="python">import itertools

def group_by_range(lst):
    lst.sort()
    for key, group in itertools.groupby(enumerate(lst), lambda t: t[1]-t[0]):
        rp = list(group)
        head, tail = rp[0][1], rp[-1][1]
        yield '{}-{}'.format(head, tail) if head!=tail else str(head)


if __name__ == '__main__':
    lst = [1,11,10,9,2,3,7,16]
    print(','.join(list(group_by_range(lst))))</code>

내가 답변한 질문: Python-QA

저도 처음 생각은 질문자와 같았습니다=. =

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