python - 如何根据 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', ...]
了十次。
为什么会这样?我该如何解决这个问题?
解决方案
在 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)
附带说明:最好不要在内置名称(列表)之后命名变量
推荐阅读
- wpf - WPF 日历中 PART_HeaderButton 的 NullReferenceException
- python - 如何将关键事件发送到python中的非活动窗口
- java - 执行appium脚本时遇到javapath错误
- python - 作为 groupby 查询的结果,如何从 DF 中删除行?
- php - 如何将此 RewriteRule 重定向到正确的页面?
- elasticsearch - ElasticSearch DSL:也可以查询自定义标签
- java - 使用 StackLayout 我只想在选择标志时显示一个表
- java - 为 HttpServletRequest 使用 Swagger 文档
- powerbi - 创建包含年度摘要和最新值的表
- jestjs - 运行 jest-puppeteer 测试时出现未处理的错误