2016-09-05 17 views
-1

これは問題が何であるかわかりません。私が読んだことはすべて、基本的に終了しない範囲、つまりエラーですが、これは固定ループなので、私には意味がありません。IndexError:文字列インデックスが範囲外です(列挙型)

私は単に文字列を取って、各文字を一度に1つずつリストに投げかけようとしています。私は何が欠けていますか?

>>> name = "Chris" 
>>> 
>>> my_list = [] 
>>> 
>>> for key, value in enumerate(name): 
...  my_list.append(value[key]) 
...  print (my_list) 
... 

エラー私が受けている:

['C'] 
Traceback (most recent call last): 
File "<pyshell#7>", line 2, in <module> 
my_list.append(value[key]) 
IndexError: string index out of range 

答えて

2

何が不足していることvalueは、単一要素の文字列であるということです。位置!= 0でのインデックス作成では、IndexErrorとなります。あなたの最初の反復の間に起こることです。

あなただけすぐに値を追加し、あなたのforループでそれを作成する場合:もちろん

for key, value in enumerate(name): 
    my_list.append(value) 

を、enumerateがここで必要でないことは、これはlistを呼び出して、文字列を供給することによって単純化することができます問題のPythonは、あなたのための文字列の内容を含むリストを作成します。

my_list = list(name) 

Python 3.xについてあなたも*listリテラルに解凍することができます:全ての供給スニペットで

my_list = [*name] 

、結果を操作は必要に応じて['C', 'h', 'r', 'i', 's']です。各時間における1つのために[ 'C'、 'H'、 'R'、 'i' は、 'S']

0
name = 'Chris' 
my_list = list(name) 
print(my_list) 

入力

for letter in name: 
print(letter) 
0

あなたが列挙されています

0 "C" 
1 "h" 
2 "r" 
3 "i" 
4 "s" 

値[キー]最初の反復において、それはOKを返すされる:キーと値が反復中に、以下の値を保持することを意味する文字列(「クリス」)上'C'。

2回目の繰り返しでは、インデックス1が文字列 "h"の範囲外です。到達するために、

0

変更my_list.append(値[キー]):あなたはおそらく何をしたいのか

はこれですあなたの目標:あなたたとえば

>>>name ="Chris" 
>>>list(name) 
['C', 'h', 'r', 'i', 's'] 

: Pythonで文字列を反復、何の列挙は必要ありません。

>>>name = "Chris" 
>>>my_list = [] 
>>>for i in name: 
... my_list.append(i) 
>>>my_list 
['C', 'h', 'r', 'i', 's'] 
0

あなたのコード内の別の方法を(値)をmy_list.appendする

for i, value in enumerate(name): 
    my_list.append(value) 
    print (my_list) 
関連する問題