首页 > 解决方案 > 如何根据 Python 中的前一个元素将新元素添加到列表中?

问题描述

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

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

[..., '2099', ...]`

2099第五元素在哪里。

代码:

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

我希望输出是:

[..., '2099', ...], [..., '2100', ...], ...,[..., '2109', ...]

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

为什么会这样?我该如何解决这个问题?

标签: pythonlist

解决方案


在 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)

附带说明:最好不要在内置名称(列表)之后命名变量


推荐阅读