Python遍历列表修改全部元素为8时运行报错,原因是什么?
问题原因
- 你代码中
for i in list_遍历得到的i是列表的元素值,而非列表的索引。你传入的列表为[1,2,3,4,5,6],当遍历到最后一个元素值6时,执行list_[i] = 8等价于访问list_[6],但列表索引从0开始计数,长度为6的列表合法索引范围是0~5,访问索引6会抛出IndexError: list assignment index out of range错误。 - 就算未触发索引报错,该逻辑也无法实现将所有值改为8的效果:比如第一次遍历拿到的i=1,仅会修改索引1位置的元素,索引0位置的元素不会被改动。
修正方案
方案1:通过列表长度遍历索引
def looping(list_): for i in range(len(list_)): list_[i] = 8 return list_ _list=[1,2,3,4,5,6] print(looping(_list))
方案2:通过enumerate遍历索引
def looping(list_): for idx, _ in enumerate(list_): list_[idx] = 8 return list_ _list=[1,2,3,4,5,6] print(looping(_list))
内容的提问来源于stack exchange,提问作者Hamzalihi
相关产品推荐
相关产品推荐

