2011-01-01 5 views
2

いくつかのPythonを練習しています。これはかなり簡単な言葉です。スライスインサートの質問、L [1:1]

私はそうは2行目に

>>> L = [1,2,3,4] 
>>> L[1:1] = [1,2,3] 
>>> L 
[1, 1, 2, 3, 2, 3, 4] 

を持って、実際にL[1:1]は空のリストですが、どのようにそれは1から開始する[1,2,3]リストを挿入理解PYTHONことができます。私は

幸運を祈り、 ウムト

答えて

4

L[1:1]は、インデックス1(2番目の要素)から開始し、インデックス1までのリストのスライスを意味します。したがって、それは空のリストです。代入の右側では、単に匿名の空のリストです。しかし、左側では、スライスが作成された場所が割り当てられており、新しいリストの値を適切な場所にスプライスすることができます。

2

スライス振る舞う...どうやらここでは、私たちに透明ではない、いくつかの内部、私はL[1:1]はそれは空のリストを返す場合でも、インデックス1への参照を返します推測があると思います式の左辺か右辺かによって異なります。左側にあるときはリストを返さず、代わりにスライスオブジェクトとして動作します。スライスオブジェクトについてはスライスに関する知識が豊富で、挿入として動作するようにオーバーライドされています。

+0

すぐにお返事ありがとうございます... –

1

公式のPythonチュートリアルでは、私の意見では、これを最もよく説明しています。 Chapter 3.1.2の終わりには、以下の図ました:

+---+---+---+---+---+ 
| H | e | l | p | A | 
+---+---+---+---+---+ 
0 1 2 3 4 5 

これが示す何を使用すると、要素間の指し示すよう指標と考えることができるということです。したがって、この図では、スライス[1:1]を指定すると、実際にはHeの間のスペースを参照していますが、スペースは含まれていません。

Heを上書きする場合は、スライス[0:2]を指定します。

関連する問題