배열이 있습니다[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
저도 처음 생각은 질문자와 같았습니다=. =