4
나는 정수의 목록을 가지고 있고, 모든 연속 정수의 목록을 포함하는 목록을 생성하고 싶습니다. 나는 다른 질문 itertools.groupby이 작업을 수행 할 수있는 효율적인 방법이라고 제안 보았다파이썬 목록에서 연속 정수의 목록을 반환
sub_list = []
continuous_list = []
for x in full_list:
if sub_list == []:
sub_list.append(x)
elif x-1 in sub_list:
sub_list.append(x)
else:
continuous_list.append(sub_list)
sub_list = [x]
continuous_list.append(sub_list)
:
#I have:
full_list = [0,1,2,3,10,11,12,59]
#I want:
continuous_integers = [[0,1,2,3], [10,11,12], [59]]
나는 그것을 할 빈약 한 방법처럼 작동하지만 보인다 다음이 그러나 나는 그 기능에 익숙하지 않고 나는 연속적인 성질을 기술하기 위해 람다 함수를 작성하는 데 어려움을 겪고있는 것처럼 보인다.
질문 :이 일을 할 수있는 더 좋은 방법은 (? 아마도 itertools.groupby와)
고려 거기는 : full_list는 1 ~ 59의 정수있을 것이다 항상 분류되며, 정수는 0과 사이가 될 것입니다 59
이
뭔가 영리라고, 내가 비판으로 의미 :하여 "영리"나는 뜻 "는의 비 명백한 기능에 따라 달라집니다 문제가 미미한 방식으로 강력하거나 일반적으로 유용하지 않다 "고 지적했다. 그러나 이것은 좋은 방법으로 영리합니다. – DSM
@DSM'itertools' 문서에서 조리법을 사용합니다. 그러나 더 이상 찾을 수없는 것 같습니다 ... –
+1 : @DSM이 말한 것. [다음 문서의 연속 실행 예제 링크] (http://docs.python.org/2.6/library/itertools.html#examples) – jfs