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

Python 索引器:字符串索引超出范围(枚举),python,python-3.x,Python,Python 3.x,好吧,我不知道这里有什么问题。我读到的所有内容基本上都是针对范围而不是结束,因此是错误,但这对我来说没有意义,因为这是一个固定循环 我只是试着用一个字符串,把每个字母一次一个地放到一个列表中。我错过了什么 >>> name = "Chris" >>> >>> my_list = [] >>> >>> for key, value in enumerate(name): ... my_list.a

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

我只是试着用一个字符串,把每个字母一次一个地放到一个列表中。我错过了什么

>>> 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
['C']
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
my_list.append(值[键])
索引器错误:字符串索引超出范围

您缺少的是
value
是一个单元素字符串。在位置索引
!=0
将导致索引器;在您的第一次迭代中,就是这样发生的

如果要使用for循环创建它,只需立即附加值:

for key, value in enumerate(name):
    my_list.append(value)
当然,
enumerate
在这里绝对不是必需的,这可以通过调用
list
并提供相关字符串来简化;Python随后将为您创建一个包含字符串内容的列表:

my_list = list(name)
对于
python3.x
,您还可以使用
*
列表中解包:

my_list = [*name]
在所有提供的代码段中,操作的结果是
['C','h','r','i','s']

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

每次一个:

for letter in name:
print(letter)

您正在对字符串(“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)

更改我的列表。将(值[key])附加到我的列表。在代码中附加(值)

另一种方法,以实现您的目标:

>>>name ="Chris"
>>>list(name)
['C', 'h', 'r', 'i', 's']
例如: 在python中迭代字符串时,不需要枚举

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