python - 为什么输入列表的值正在改变?
问题描述
因为我不知道应该给我的这种困惑起什么标题,所以我只是怀疑
a = [1,2,3,4,5]
b = a
for i in range(len(a)):
c = (i - 4)
print(a)
print(b)
b[c] = a[i]
print(a)
print(b)
输出
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 3, 4, 5]
[1, 1, 1, 4, 5]
[1, 1, 1, 4, 5]
...
为什么列表a
的值会在循环的每一步中出现?
解决方案
您的问题在于这一行:
b = a
这并不像你认为的那样。特别是,它不会复制a
. 赋值后,两者都b
引用a
同一个对象。因此,对的任何更改b
也反映在a
。
强制复制的一种方法是使用切片语法:
b = a[:]
推荐阅读
- python - JSON查询:python中的日期时间验证
- excel - Google Apps 脚本 - 将 xlsx 转换为覆盖现有文件的表格
- python-3.x - 抓取网页上的特定表格,但每次都是空的
- git - 赫斯基钩子不在 Lerna monorepo 中运行
- c# - 如何自动更新 DataGridViewColumn?
- javascript - 使用 ASP.NET Razor 的 Ajax POST
- android - 如何在 RecyclerView 上使用 Firebase 存储显示多个用户的图像
- java - 接收数据时如何以图形方式更改数字?
- python - .map_diag(plt.hist,bins=30) - 对角线上没有直方图
- c# - 单击关闭按钮后,我在这一行出现 System.IO.IO.Exception 错误 'string machine_data = serialPort1.ReadTo("\u0003");'