Python中通过索引修改元素及存储处理后值的技术问题
问题分析与解决
为什么未得到期望输出?
你第一段代码里的value是循环中的临时变量,每次迭代时会被重新赋值为当前data元素的原始值:
- 第一次迭代:
value初始为4,乘2后变为8,但这个值仅存在当前迭代的临时变量中,没有被保存 - 第二次迭代:
value被重新赋值为6,乘2后变为12,同样只是临时变量 - 第三次迭代:
value被赋值为8,乘2后变为16,这是最后一次迭代的结果,因此print(value)只会输出这个最终的临时值,而非所有处理后的值组成的列表。
而data[index] = data[index] + 1是直接修改原列表的元素,所以data的输出符合预期。
如何将处理后的value存入空列表?
使用列表的append()方法,即可把每次处理后的value添加到空列表中。修改后的完整代码如下:
data = [4, 6, 8] empty_list = [] for index, value in enumerate(data): data[index] = data[index] + 1 value = value * 2 empty_list.append(value) # 将处理后的value添加到空列表 print(data) print(empty_list)
运行后终端输出会与你的期望一致:
[5, 7, 9] [8, 12, 16]
内容的提问来源于stack exchange,提问作者Olisau
相关产品推荐
相关产品推荐

