我们都知道python中一切皆是对象,这句话我记得很清楚,但是平时用起来确也容易混淆。
今天遇到一个bug,大概情况是这样:
a = [
1,
2,
3]
b = [
11,
22,
33]
c = [a,b]
print c
# c =
[[1, 2, 3], [11, 22, 33]]
我在一个文件中修改了a,而在另一个列表中读c,结果发现c总是不对…..检查好久才想起来了,c中存贮的a应该是a的引用,也就是python中常见的对象浅拷贝。测试一下:
a[
0] =
5
print c
# c =
[[5, 2, 3], [11, 22, 33]]
以后一定要注意啊,特别是多处读写的敌方,很容易忽视!
如果在c中独自保留a的副本,则应该使用copy。
a = [
1,
2,
3]
b = [
11,
22,
33]
np.copy(
a)
c = [np.copy(
a), b]
print c
a[
0] =
5
print c
转载请注明原文地址: https://ju.6miu.com/read-676509.html