0

エラーが発生するか、None の値が変数「親」に割り当てられるまでループするコードがあります。ループごとに、actionList と呼ばれるリストに値を追加します。print ステートメントを使用すると、ループの繰り返しごとにリストが大きくなっていくことがわかります。ただし、(キャッチされた KeyError によって) ループを終了した後、print ステートメントは、リストに None の値が割り当てられていることを明らかにします。何が起こっているのか分かりますか?

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() を間違って使用していますか?

4

1 に答える 1

6

はい。 reverseリストを元に戻し、None を返します。代わりにこれを行います:

actionList.reverse()
return actionList

を実行することもできますreturn list(reversed(actionList))。これは、リストの逆コピーを返します。

于 2012-10-14T07:02:33.733 に答える