python对数据的定义与分配与我们想像的不同

举例:

    a = [1, 2, 3, 4, 5]
    b = a
    b[2] = 0	# 修改了B,但没有修改A
    print(a)  
    print(b)  

第3行代码:你以为的是仅仅修改了B,但没有修改A,A还应该是是最初的[1,2,3,4,5],但运行结果却是:
[1, 2, 0, 4, 5]
[1, 2, 0, 4, 5]
A和B同时发生了改变

这也说明Python的所有操作都是通过指针来进行,这样也就可以解释为什么A和B同时变化了,因为它们本 质上都是指针而已,只是指向了同一个地址,并没有为b分配内存空间。

如果想要为b分配空间,并单独改变B该怎么办呢

    a = [1, 2, 3, 4, 5]
    b = [0]*5
    b[0] = a[0]
    b[1] = a[1]
    b[2] = a[2]
    b[3] = a[3]
    b[4] = a[4]
    b[2] = 0	# 单独改变B
    print(a)
    print(b)

运行结果:
[1, 2, 3, 4, 5]
[1, 2, 0, 4, 5]

OK了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值