2012-10-14 3 views
0

오류가 발생하거나 None 값이 변수 "parent"에 할당 될 때까지 반복되는 코드 조각이 있습니다. 각 루프에서 actionList라는 값을 목록에 추가합니다. print 문을 통해 루프의 각 반복을 통해 목록이 커지고 있음을 알았습니다. 그러나 루프를 종료 한 후 (잡히는 KeyError를 통해) print 문은 이제 목록에 None 값이 할당되었음을 나타냅니다. 무슨 일있어?while 루프를 종료하면 왜 내 목록이 사라지나요?

while parent is not None: 
       print "iterating" 
       print actionList 
       try: 
        pathList.append(parentMap[parent]) 
       except KeyError: 
        break 
       actionList.append(actionMap[parent]) 
       parent = parentMap.get(parent, None) 
      return actionList.reverse() 

더 자세히 살펴보면 루프를 빠져 나가면 actionList가 손상되지 않은 것처럼 보입니다. 그러나 actionList에 reverse() 메서드가 사용되면 사라집니다. reverse()를 잘못 사용하고 있습니까?

+3

음 ... 우선, 들여 쓰기가 길어지고 파이썬에서 중요한 부분을 알기 때문에 고칠 수 있습니까? 또한, "사라짐"이란 무엇을 의미합니까? –

답변

6

예. reverse은 목록을 자리 바꿈하고 None을 반환합니다. 대신이 작업을 수행 : 또한 목록의 반전 사본를 반환합니다 return list(reversed(actionList))을 할 수

actionList.reverse() 
return actionList 

.

+2

아닙니다. 'reversed()'는 목록이 아닌'listreiteriterator 객체'(또는 Python 3의'list_reiteriterator 객체 ')를 반환합니다. 아직도, +1 –

+0

당신 말이 맞습니다. – BrenBarn

관련 문제