Python切片赋值

xiaoxiao2021-02-28  77

今天在用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

转载请注明原文地址: https://www.6miu.com/read-55932.html

最新回复(0)