如何实现二维列表元素为内外层索引之和?原代码问题解析
问题原因分析与解决方案
一、错误原因
- 列表引用复用问题:Python中用
liste1 * 10创建liste2时,并非生成10个独立的新列表,而是让liste2的10个元素全部指向同一个liste1对象。后续每次循环修改liste1的内容,所有子列表都会同步变化;最后一次循环i=9时,liste1被修改为全9的列表,因此最终liste2里所有子列表都显示为全9。 - 元素值逻辑错误:代码将
liste1[j]直接赋值为i,完全没有实现“外层索引与内层索引之和”的需求,就算解决了引用问题,结果也不符合预期。
二、解决方案
方法1:嵌套循环创建独立子列表
每次外层循环都新建一个子列表,彻底避免引用复用问题,同时正确计算元素值:
def function(): liste2 = [] i = 0 while i < 10: liste1 = [] j = 0 while j < 10: liste1.append(i + j) j += 1 liste2.append(liste1) i += 1 print(liste2) function()
方法2:列表推导式(更简洁)
利用Python的列表推导式可以快速实现需求,代码更简洁且逻辑清晰:
def function(): liste2 = [[i + j for j in range(10)] for i in range(10)] print(liste2) function()
内容的提问来源于stack exchange,提问作者Yohann DCz
相关产品推荐
相关产品推荐

