2012-07-06 11 views
52

可能性の重複:
Explain slice notation負のリストのインデックス?

私は次のコードを理解しようとしています:

# node list 
n = [] 
for i in xrange(1, numnodes + 1): 
    tmp = session.newobject(); 
    n.append(tmp) 
link(n[0], n[-1]) 

具体的には、私が何を指標-1理解していませんを指す。インデックス0が最初の要素を参照する場合、-1は何を参照していますか?

+2

私はこの質問が最後の[Pythonスライス表記のための良いプライマー](http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation) – Daenyth

+0

と同じ地面をカバーしていると思います。それが正しいと思う..ありがとう! – Dawood

答えて

96

負の数は、左からではなく右から数えることを意味します。したがって、list[-1]は最後の要素を指し、list[-2]は2番目に続きます。

+7

しかし、警告があります。スライス表記を試してみると、動作が少し異なります。その場合に-1を使用すると、最後から1つの要素が返されます。 >>> a = [1,2,3,4,5] >>> a [-1] >>> a [: - 1] [1、2、3、4] – abought

+5

@しかし、それは正常な行動ではない? 'a [4]'と言った場合、5が返されますが、 'a [:4]'は[1,2,3,4]を返す – yesennes

6

リストのインデックス-xは、リストの最後からx番目のアイテムを意味します。したがって、n[-1]はリストnの最後のアイテムを意味します。良いPythonチュートリアルでこれを伝えておいたはずです。

Python以外の言語はほとんどありませんが、それは非常に便利です。他の言語であれば、リストの最後の項目にアクセスするのに多くの時間を費やします。n[n.length-1]

+1

すべての言語がこの設計に従うことはできません。 Cでは、 'n [-1]'は文字通り 'n [0]'の前の要素を意味し、nが配列を指していれば問題ありません。 [http://dlang.org/d-array-article.html](Slicing in D)は、右からの記法を含む母国語でのメモリ安全なスライスに興味深いです。 –

+0

Pythonはこの機能をPerlから直接取得しています:https://stackoverflow.com/questions/15911115/arrays-and-negative-indexes-in-perl私の知る限りでは、LarryはPerlのためにそれ自身を思いついたのですが、彼はどこか他の人からそれを得ていたかもしれません。 –

関連する問題