2012-02-28 10 views
1

id(L)id(L[:])の違いと関係について興味があります。Lはリストです。pythonリストのID(L)とID(L [:])

公式ドキュメントはこのIDに関する()言う:

はCPythonの実装の詳細は:これは、メモリ内のオブジェクトのアドレスです。

しかし、id(L)id(L[:])の値が異なる理由はわかりません。

答えて

7

L[:]は、リストのコピーを生成します。その新しいリストには、Lと同じ項目が含まれています。その結果、メモリ内の別の場所に格納され、異なるIDを持ちます。

+0

途中で 'L [slice(None)]と同じです。そしてそれは浅いコピーです。 – wim

+0

だから、あなたが 'id(L [:])'を実行したとしても、インタプリタはリストの浅いコピーを作成して新しいアドレスを返し、 'id(L [:]) 'が完了しましたか?返信いただきありがとうございます:) – taijirobot

+0

@taijirobot、まさにそれが起こります。 –