2012-10-29 6 views
4

안녕하세요, 저는 장소별로 그룹화 된 개인 목록을 가지고 있습니다. 각자의 위치에 따라 숫자를 부여하는 새로운 변수를 만들고 싶습니다. 내가 같이 내 데이터를 원하는 어떤 것은 :이 작성한파이썬 : 루프에서 값을 반올림하지 않고 반환

place  individual 
here  1 
here  2 
here  3 
there  1 
there  2 
somewhere 1 
somewhere 2 

:

nest="ddd", "ddd", "fff", "fff", "fff", "fff", "qqq", "qqq" 

    def individual(x): 
     i = 0 
     j = 1 
     while i < len(x): 
      if x[i] == x[i-1]: 
       print(j+1) 
       i = i + 1 
       j = j + 1 
      else: 
       print(1) 
       i = i + 1 
       j = 1 

    individual(nest) 

내가 거기에 그것을 밖으로 나누기 돌려 넣을 경우는, 그러나, 내가 원하는 값을 출력 루프 및 첫 번째 값만 반환합니다. 이러한 값을 어떻게 반환 할 수 있을지 궁금해서 내 데이터를 새 열로 추가 할 수 있습니까?

수익에 대해 읽었습니까? 적절한 지 확신 할 수 없었습니다. 도와 줘서 고마워!

건배,

답변

5

아담 yield ...print(...)를 교체합니다. 그러면 반복자를 줄 수있는 생성기가 생깁니다. 그런 다음 결과를 반복하여 다른 적절한 데이터 구조로 변환 할 수 있습니다. 예를 들어, 발전기 목록을 구성하기 위해, 당신은 할 수 :

반복이 경우 암시 적
list(individual(nest)) #this is prefered 

...

또는 (더 원형에 대한하지만, 아마도 더 많은 정보를이에 컨텍스트) :

[ x for x in individual(nest) ] #This is just for demonstration. 
+0

@Marcin - 수정 해 주셔서 감사합니다. – mgilson

+0

고맙습니다. – Adam

관련 문제