即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Python切片赋值

编程语言 yjIvan 25℃ 0评论

今天在用Python写决策树的时候遇到了点儿小问题:

在树分叉的时候需要对子标签赋值

书上写的是

subLabels=lebels[:]

我写的是

subLabels=labels

得到的结果不一样,很不幸是我错了;

后来验证了一下两个写法的区别,各位同学一定要注意了:

a=[0,2,3,0]
b=a
print b
del(a[1])
print b

这样写得到的结果是:

[0, 2, 3, 0]


[0, 3, 0]


切片赋值得到的结果是:

a=[0,2,3,0]
b=a[:]
print b
del(a[1])
print b

[0, 2, 3, 0]
[0, 2, 3, 0]


是不一样吧?

切片赋值,得到的与原变量无关,是两个不同的对象;直接赋值,引用的是同一个对象。这里可以对他们的id做一下输出就会发现问题所在

直接赋值得到的id是一样的:

[0, 2, 3, 0]


[0, 3, 0]


id(b): 83565448       id(a): 83565448


切片赋值就变成了这样:

[0, 2, 3, 0]


[0, 2, 3, 0]


id(b): 83250504       id(a): 83250056





转载请注明:CodingBlog » Python切片赋值

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情