私はまだPythonには新しく、元のリストとリストの両方のリストを逆にする小さな関数を作っています。これは私のコードです:Python:リストの値をインラインに割り当てると、 "None"要素のリストが返されるのはなぜですか?
def deep_reverse(L):
L.reverse()
L = [i.reverse() for i in L]
今、このコードは完璧に動作しますが、私は小さな変更を行うと、このような行を並べ替える場合:
def deep_reverse(L):
L = [i.reverse() for i in L]
L.reverse()
を突然、それは動作を停止します!内部リストのみを元に戻しますが、元のリストは元に戻しません。一部のデバッグprint()ステートメントを内部に置くと、最初のコードが最初の行の後に元のリストを反転して印刷されているのが見えますが、2番目のコードは実際にはリストを反転した後に要素として 'None'を含むリストを出力します。誰もがなぜこの動作と2つのコードの違いは何かを説明してくださいできますか?
あなたはリスト内包表記を誤解しています。 'L 'に代入すると、関数に渡されたものは変更されず、' reverse() 'は何も返しません。 'for i in L:i.reverse()'でなければなりません。 – Ryan
しかし、コードは動作します。それがうまくいくなら私はそれをどうやって悪用しますか? –
両方の機能の最後に 'return L 'を忘れた場合 –