IndexError:字符串索引超出范围(枚举)

时间:2016-09-05 09:37:51

标签: python python-3.x

好的,所以我不知道这里有什么问题。我读过的所有内容基本上都是针对未结束的范围,因此是错误,但这对我来说没有意义,因为这是一个固定的循环。

我只是尝试取一个字符串,并将每个字母一次丢入一个列表中。我错过了什么?

>>> 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

5 个答案:

答案 0 :(得分: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 :(得分:0)

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

输入:[&#39; C&#39;,&#39; h&#39;&#39; r&#39;,&#39; i&#39;&#39; s&#39; ]

每次一个:

for letter in name:
print(letter)

答案 2 :(得分:0)

您正在枚举一个字符串(“Chris”),这意味着在迭代过程中键和值将保存以下值:

0  "C"
1  "h"
2  "r"
3  "i"
4  "s"
第一次迭代中的

值[key]没问题,它返回'C'。

在第二次迭代中,索引1超出了字符串“h”的范围。

您可能想要做的是:

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

答案 3 :(得分:0)

将my_list.append(value [key])更改为代码中的my_list.append(value)

答案 4 :(得分:0)

另一种实现目标的方法:

>>>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']