2015-11-26 5 views
5

私は、文字列作成すると、次のように文字列索引付け - なぜ[0] [0]が動作し、S [1] [1]が失敗するのですか?

>>> S = "spam" 

今、私は、インデックスを:

>>> S[0][0][0][0][0] 

を私のように出力を得る:

として
>>> 's' 

しかし、私は、インデックスを:

>>> S[1][1][1][1][1] 
Traceback (most recent call last): 
File "<pyshell#125>", line 1, in <module> 
L[1][1][1][1][1] 
IndexError: string index out of range 

なぜ出力されません'P'です:3210私は出力を得ますか?

また、それがSのために働いているのはなぜ[0] [0]又はS [0] [0] [0]又はS [0] [0] [0] [0]としませんS [1]またはS [1] [1] [1]またはS [1] [1] [1] [1]

+3

'S [0]'は '' s ''で、 '' s [0] ''は '' s '' [0] 'は' s ''' s "[0]' ' 「s」であり、「s」[0]は「s」であり、「s」[0]は「s」であり、「s」[0]は「s」であり、以下同様である。しかし、 "s"は1つのチャットしか持たないので "s" [1] 'は範囲外です。これは" s "で0のインデックスにあります。 – Maroun

答えて

10

答えはS[0]はあなたに必然0 S[1]はまた、あなたの長さ1の文字列を与えるインデックスの文字を持っている長さ1の文字列を与えることであるが、それは必ずしもインデックス1を参照してくださいに文字を持っていません以下のようになります。

>>> S = "spam" 
>>> S[0] 
's' 
>>> S[0][0] 
's' 
>>> S[1] 
'p' 
>>> S[1][0] 
'p' 
>>> S[1][1] 
Traceback (most recent call last): 
    File "<pyshell#20>", line 1, in <module> 
    S[1][1] 
IndexError: string index out of range 
+0

ありがとうelendia-starman :) :) – Codessci

8

任意の文字列の最初のインデックス([0])は最初の文字です。これは1文字の文字列になるので、その文字列の最初のインデックスは最初の文字です。これはそれ自身です。 [0]を好きなだけ行え、同じキャラクターにとどまることができます。

ただし、2番目のインデックス([1])は、2文字以上の文字列にのみ存在します。 1文字の文字列を生成するために文字列をすでに索引付けしている場合は、[1]は機能しません。

>>> a = 'abcd' 
>>> a[0] 
'a' 
>>> a[0][0] 
'a' 
>>> a[1] 
'b' 
>>> a[1][0][0] 
'b' 
>>> a[1][1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
+1

私はそれがコマンドのほぼ同じシーケンスをどのようにしたのか面白いです。 :) –

0

Python文字列は、常に0番目の位置文字列/ 1文字目を持ちます。 [0]を100回行っても、残りの文字列の最初の文字が常に選択されます。したがって....

プログラミング言語では、配列の添字が1で始まる場合、同様に第1文字に対してこれを行うことができます。

関連する問題