|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- s = [1,2,3]
- id(s) == id(s) #False
- s[:] = [2,2,2]
- print(s) #[2,2,2]
复制代码
列表切片重新创建个对象,1.为什么赋值后会改变原列表s?
2.这和下面代码有什么区别?
- s = [1,2,3]
- si = s[:]
- si = [2,2,2]
- print(s)
复制代码
3.另:看到有资料写到”数组切片是原始数组的视图,意味着数据不会被复制,任何修改都会直接反映到源数组上。“是否是说,在numpy中ndarray做in-place的操作必须用到切片。
1.为什么赋值后会改变原列表s?
不是改变了原列表,而是你将变量名指向了新创建的对象,原列表已经没有变量名指向它了
2.这和下面代码有什么区别?
用一个新的变量名指向新创建的对象,原变量名不受影响
3.另:看到有资料写到”数组切片是原始数组的视图,意味着数据不会被复制,任何修改都会直接反映到源数组上。“是否是说,在numpy中ndarray做in-place的操作必须用到切片。
这个说法只在numpy库对象使用中成立,numpy库的array对象切片操作是会对本身进行操作,因为一般都是处理大型矩阵,这样大大的节省了开销,同时也提高了效率
|
|