2011-02-09 1 views
12

リストを考えてみましょう>>> l=[1,2,3]Python: "list"が同じものを指すとき、なぜ "list [:]"を使うのですか?

>>> lが前と同じことを印刷する場合、>>> l[:]を使用する利点は何ですか?

ありがとうございました。

+5

なぜあなたはそれらが同じものだと思うのですか?それを確認するために 'id()'関数を使いましたか? –

+1

同じ値が表示されました。それで私はそう思った。私は[:]を付けずに同じ出力が得られたときに余分な文字を書いて時間を浪費するのはなぜだろうと思っていました。 'id()'については決して知りませんでした。それを指摘してくれてありがとう。 – Dharmit

+5

@Dharmit:大丈夫です、怖がらないでください!あなたは学習しており、そのような質問をすることは明らかです。それは良い質問だった。私たちはすべて、どこかで始まります。私たちが学んでいたときに、私たちもそのような質問をしていたことを忘れないようにしてください。 – user225312

答えて

35

(浅い)コピーを作成します。

>>> l = [1,2,3] 
>>> m = l[:] 
>>> n = l 
>>> l.append(4) 
>>> m 
[1, 2, 3] 
>>> n 
[1, 2, 3, 4] 
>>> n is l 
True 
>>> m is l 
False 
+5

+1:彼らはまったく同じものではない。 –

+6

+20この基本的なもの(それ以前に頼まれていたものは、それを使った100の他の質問で説明されていますが、公式のチュートリアルや他の多くのものがあります)... – delnan

+3

@delnan: SOの魔法;-) – user225312

12

l[:]をスライス表記といいます。これはリスト内のいくつかの要素だけを抽出するために使用できますが、この場合は境界が省略されてリスト全体が返されますが、スライスのため実際にはlとは異なるリストへの参照になります同じ要素。この手法は、浅いコピーやクローンの作成によく使用されます。

http://docs.python.org/tutorial/introduction.html#lists

関連する問題