2
def manualReverse(list):
    return list[::-1]

    def reverse(list):
        return list(reversed(list))   

list = [2,3,5,7,9]

print manualReverse(list)
print reverse(list)

私はちょうど学び始めましPythonた。以下の質問を手伝ってくれる人はいますか?

1.なぜリストlist[::-1]を返すのreversedですか?

2.なぜ2番目の関数が私をスローするのですNameError: name 'reverse' is not definedか?

4

3 に答える 3

13

[::-1]は と同等ですが[::1]、左から右に移動する代わりに、負の値を指定すると右から左に移動します。負のステップが 1 の場合、これは単純にすべての要素を逆の順序で返します。全体の構文はPython Slice Notationと呼ばれます。

その理由'reverse' is not definedは、グローバルに定義していないためです。関数内のローカル名manualReverseです。関数のインデントを解除して、グローバル関数にすることができます。

def manualReverse(list):
    return list[::-1]

def reverse(list):
    return list(reversed(list))   

ところで、リストに名前を付けることは決して良い考えではありませんlist。依存する関数も含め、組み込み型をオーバーライドします(list(reversed(list))

于 2013-07-11T11:27:23.767 に答える
2

list[::-1]スライス表記を利用し、すべての要素を逆順に返します。 Python のスライス表記について説明します 。ここに例を含む詳細な説明があります。これは、これと同様の質問に答えます。

のインデントにより、 のdef reverse(list)内部でのみ表示されmanualReverse(list)ます。インデントを解除すると、グローバルに表示されます。

于 2013-07-11T11:28:37.413 に答える