如何用双while循环向列表的列表追加元素?遇单次迭代问题求助
代码分析与问题解答
你的代码
new_result = True countlist = 0 countlist2 = 2 countlist3 = 3 biglist = [] while new_result: if countlist == 10: new_result = False else: new_result = True while countlist2 < 100: timestwo = countlist2 * 2 countlist2 += 2 timesthree = countlist3 * 3 countlist3 += 3 biglist.append([timestwo,timesthree]) countlist += 1 countlist2 = 2 countlist3 = 3 print(biglist)
问题解答
为何列表中仅显示一次数据迭代?
内层while countlist2 < 100循环在第一次外层循环时,就把countlist2从2累加至100(最后一次加2后等于100,不满足<100的条件,退出内层循环),countlist3也随之累加至很大的数值。之后外层循环再执行9次时,countlist2已经是100,不满足内层循环的进入条件,所以不会再向biglist中添加任何数据,最终只保留第一次内层循环的结果。代码中列表是在哪被清空的?
你的代码里根本没有清空biglist的操作(比如biglist.clear()或者biglist = [])。你看到只有一次数据,是因为后续外层循环没有触发内层循环的追加逻辑,不是列表被清空了。能否实现向列表的列表追加10次相同数据?
可以实现,只需要把countlist2和countlist3的重置操作放到外层循环内部,确保每次外层循环时,内层循环都能从初始值开始执行。另外可以简化外层循环的逻辑,让代码更清晰:biglist = [] # 直接循环10次,替代原有的while逻辑 for _ in range(10): countlist2 = 2 countlist3 = 3 while countlist2 < 100: timestwo = countlist2 * 2 countlist2 += 2 timesthree = countlist3 * 3 countlist3 += 3 biglist.append([timestwo, timesthree]) print(biglist)这样每次外层循环都会重新初始化
countlist2和countlist3,内层循环会完整执行一遍,把相同的数据集追加到biglist中,最终得到10次重复的迭代数据。
内容的提问来源于stack exchange,提问作者Excel_Tom
相关产品推荐
相关产品推荐

