私はここで何が起こっているのか理解できません。 range
関数への参照の追加は、インデックス3
での再帰的リストの作成のようなものです。どの範囲関数がPythonリストに対して機能しますか?
>>> x = range(3)
[0, 1, 2]
>>> x.append(x)
[0, 1, 2, [...]]
>>> x[3][3][3][3][0] = 5
[5, 1, 2, [...]]
、私はこれは試してみてください。
>>> x = range(3)
[0, 1, 2]
>>> x.append(range(3))
[0, 1, 2, [0, 1, 2]]
私は簡単に後者の場合の理由を推測することができなく、添付のリストに何をしているかrange
関数への参照を追加し理解することができません。
なぜこれがありますPython 2と3の両方にタグ付けされていますか? 'range'は2と3では異なって動作します。 – interjay
リストはPythonで参照渡しされます。つまり、最初のシナリオでは、xの値ではなくxにポインタを追加しています。 xにはxへのポインタが含まれるため、その時点で再帰的に自身を呼び出します。 –
@JacobH: "リストは参照渡し"と言うと、リストは他のオブジェクトとは異なる動作をするようです。 – DSM