2017-10-24 4 views
0

配列やリストから部品をコピーすることについていくつかの質問がありましたが、それでもその背後にあるロジックを理解できません...インデックスでそれらを呼び出すことにより、値が、あまりにも、インデックスでそれを呼び出すことにより、リストの一部を取得することはできませんが...リストから値を取得する方法

x=[0,1,2,3,4,5] 
>>>x[2] 
2 
>>>x[4] 
4 
>>>x[2:4] 
[2,3] 

私は最後の行に期待していますでしょうそのコマンドが返しますインデックス2、3、4の値!

>>> x[2:4] 
[2,3,4] 

私はそれがそうであったと思うようなコマンドがありますか?

+2

を必要として、あなたのケースでインデックスb を最大インデックスaからx[a:b]開始を書き込み、含みませんスライス演算子が機能します。あなたがしようとしているのは、リストをサブスクリプトすることです。まず、[this](https://stackoverflow.com/questions/509211/understanding-pythons-slice-notation)の投稿を読んでください。 – pstatix

+0

https://stackoverflow.com/questions/509211/understanding-pythons-slice-notationここをクリックしてください。 – voiDnyx

+0

'x [2:4 + 1]'はどうですか? – jadsq

答えて

2

インデックスが2 <= index < 4の場合、x[2:4]はすべての値を取得しています。したがって、インデックス23が得られますが、4ではありません。これは、下限で上限を引いて、部分リストのサイズを(Pythonだけでなく、一般的にはコンピューティングでも)常に伝えることができるように行われます。 4 - 2 = 2であるため、リストには2つの項目があります。

あなたがそれを読む気にすれば、これについてのE.W. Dijkstraの興味深い記事があります。here

0

あなたが行っている操作:

x[2:4] 

slicing operationと呼ばれています。そのフォーマットは、list[x:y]の場合、xからy-1の範囲のインデックス値を取得します。したがってすなわち、list[x]...list[y-1]

、あなたはXを行う[2:4]:

>>> x = [0,1,2,3,4,5] 
>>> x[2:4] 
=> [2, 3] 

#should be 
>>> x[2:5] 
=> [2, 3, 4] 

少数の読み取り参照:

、あなたがのためにあなたが持っているしたがって

x[2]...x[4-1] => x[2]...x[3] 

から値を取得します

0

あなたは行うことができます

x[2:5]

ので、だからあなたはどのように読む必要がx[a:b+1]