好的,所以我不知道这里有什么问题。我读过的所有内容基本上都是针对未结束的范围,因此是错误,但这对我来说没有意义,因为这是一个固定的循环。
我只是尝试取一个字符串,并将每个字母一次丢入一个列表中。我错过了什么?
>>> 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
答案 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']