好的,所以我不知道这里有什么问题。 我读过的所有内容基本上都解决了范围不结束,因此错误,但这对我来说没有意义,因为这是一个固定循环。
我只是想拿一个字符串,一次把每个字母扔进一个列表中。 我错过了什么?
>>> 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
你缺少的是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']
。
name = 'Chris'
my_list = list(name)
print(my_list)
输入: ["C", "h", "r", ">i", "s"]
每次一个:
for letter in name:
print(letter)
您正在枚举一个字符串("Chris"(,这意味着键和值将在迭代期间保存以下值:
0 "C"
1 "h"
2 "r"
3 "i"
4 "s"
第一次迭代中的 value[key] 是可以的,它返回 'C'。
在第二次迭代中,索引 1 超出了字符串"h"的范围。
您可能想做的是:
for i, value in enumerate(name):
my_list.append(value)
print (my_list)
实现目标的另一种方法:
>>>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']
代码中的my_list.append(value[key])
更改为my_list.append(value)