정확하게이 함수가 사용하고있는 프로그래밍 마술로 인해이 함수가하는 일을 정확히 이해하는 데 문제가 있습니까?itertools.groupby 함수가 일관성이없는 것처럼 보입니다
iterator와 쌍을 이루는 키 목록 (문자열의 고유 한 문자)을 반환하는 것처럼 보입니다.이 문자열은 원래 문자열의 각 문자 수 목록을 참조하지만 때로는 이렇게 보입니다. 그렇지 않아. 예를 들어
: 인쇄
import itertools
x = list(itertools.groupby("AAABBB"))
print x
: 이것은 올바른 것 같다
[('A', <itertools._grouper object at 0x101a0b050),
('B', <itertools._grouper object at 0x101a0b090)]
, 우리는 반복자와 짝을 우리의 고유 키가 있습니다.
print list(x[0][1])
내가 얻을 :
[]
을 내가
for k, g in x:
print k + ' - ' + g
을 실행할 때 내가 얻을 :하지만 실행할 때
B - <itertools._grouper object at 0x1007eedd5>
그것은 첫 번째 요소를 무시합니다. 내가 할
[list(g) for k, g in itertools.groupby("AAABBB")]
:이 난 그냥 문법을 약간 변경하는 경우 때문에, 반 직관적 보인다
[["A", "A", "A"], ["B", "B", "B"]]
맞다, 나는이 기능은 일을해야 생각으로 정렬합니다. 나는 다시 한 번 구문을 조금 변경하면
그러나 :
[[], ['B']]
이 두 지능형리스트가 직접 동일해야하지만 서로 다른 결과를 반환 :
[list(thing) for thing in [g for k, g in itertools.groupby(string)]]
을 내가 다시 얻을.
무슨 일입니까? 통찰력은 대단히 감사하겠습니다.
최상위 레벨 반복기를 진행하자마자'group' 반복기가 유효하지 않게됩니다. – ShadowRanger