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