如何基于Python中的前一个元素向列表中添加新元素?

如何基于Python中的前一个元素向列表中添加新元素?,python,list,Python,List,我有一份预测气候数据的清单。我试图复制这个列表的最后一行十次,但是用序列号替换一个元素 我的代码非常简单,但并没有像我预期的那样工作。最后一行是这样的: […,'2099',…]` 其中2099是第五个元素 代码: def addlist(列表): 对于范围(10)内的i: 换行符=列表[-1] 换行符[4]=str(int(换行符[4])+1) list.append(换行符) 返回列表 打印(列表) 我预计产出为: […,'2099',…],[…,'2100',…],…,[…,'2109'

我有一份预测气候数据的清单。我试图复制这个列表的最后一行十次,但是用序列号替换一个元素

我的代码非常简单,但并没有像我预期的那样工作。最后一行是这样的:

[…,'2099',…]`

其中
2099
是第五个元素

代码:

def addlist(列表):
对于范围(10)内的i:
换行符=列表[-1]
换行符[4]=str(int(换行符[4])+1)
list.append(换行符)
返回列表
打印(列表)
我预计产出为:

[…,'2099',…],[…,'2100',…],…,[…,'2109',…]

但是这段代码以某种方式删除了
[…,'2099',…]
行,并重复了
[…,'2109',…]
十次


为什么会发生这种情况?如何解决这个问题?

在Python中,列表是可变的。除非在函数中创建列表元素的新实例,否则所做的任何操作都将更改原始列表

因此,在函数中,添加到末尾的10个列表实际上都是相同的列表。此外,由于原始列表正在通过此功能进行编辑,因此最终无需返回最终列表

def addlist (input_list):
for i in range (10):
    newline = list(input_list[-1])
    newline[4] = str(int(newline[4]) + 1)
    input_list.append(newline)
print(list)

作为旁注:最好不要在内置名称(列表)后命名变量。

您能再解释一下吗?因为我不明白这个问题。。。“我试着把这个列表的最后一行复制十次”-所以你的列表有很多行?还是说列表中的最后一个元素?或者你有一个列表,里面有列表?@emsiiggy是的,我的列表有很多行,每一行都是一个列表-所以它确实是一个列表列表。我想复制最后一行(即整个列表的最后一个元素)并替换此行的第五个元素…这有意义吗?