python - 既然 slice 做了浅拷贝,为什么它可以用来更新原始的可变集合?
问题描述
我知道 slice 操作符做了一个浅拷贝。
但是当我在整数列表上使用切片运算符并对切片进行突变时,突变会反映在原始列表中。由于整数是不可变的,结果让我很困惑。
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("Before slicing...")
print(x)
print("Slicing...")
x[1::2]=[0]*len(x[1::2])
print("After slicing...")
print(x)
x[2:2]=[1]
print(x)
输出是
Before slicing...
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Slicing...
After slicing...
[1, 0, 3, 0, 5, 0, 7, 0, 9, 0]
[1, 0, 1, 3, 0, 5, 0, 7, 0, 9, 0]
既然x[1::2]
并且x[2:2]
做了浅拷贝,为什么对它的更改会反映在原始列表中?
解决方案
推荐阅读
- javascript - 将 jquery 库下载到项目 Error:java: Illegal char <:> at index 4: http:\api.jquery.com
- python - 如何在firebase(python)上推送多个新对象
- python - Django url 找不到带有 HTML 文件的模板
- r - 如何修改我的代码以包含循环?
- c# - 启动 prog1.exe ,等到完全启动,然后启动 prog2.exe
- swift - 包加载:“忽略重复产品”(SwiftPM)
- r - 字符匹配和年份后的语句子串
- java - 如何将 StartActivityForResult 事件注册到 ViewModel?[MVVM]
- c# - 当我从我的 API 使用 Post 插入数据库时出现异常
- python - 使用 Anaconda 将 Django 应用程序部署到 Heroku 时出现“没有这样的选项:--allow-all-external”