zoukankan      html  css  js  c++  java
  • python 中变量的赋值,复制,以及直接修改内存。

    之前以为python中的赋值是赋值,事实告诉我这只是浅拷贝,只是指针(或者引用)的赋值,即两者引用(指向)的内存还是同一个,只有深拷贝才能完全把内存空间里的值再创建一份然后放到一个新地址里供新的变量引用,类比c++的深浅拷贝。

    import copy
    a=[1,2,3,[4,5,6]]
    b=a    #赋值
    c=copy.copy(a)    #shallow copy
    d=copy.deepcopy(a)      #Deep copy
    

    使用is关键字判断两个变量是否指向同一个内存空间。

    如果想使用深拷贝就调用copy库,一般的赋值即使是自定义的对象也是浅拷贝。

    python中也有数组,并不是list

    # Array[]:相同类型元素的序列
    from array import array
    a1=array('h',[1,2,3])
    memv=memoryview(a1)#内存视图
    len(memv)
    memv[0]=55
    a1
    dir(a1)#array相关操作
    

      

    这里可以看到可以用数组名字直接操作内存中的内容。(利用视图,其实应当是找地址。)

    tuple不能改变元素的值,但是可以增减对应元素的值。

    set用{}储存不重复的值。

  • 相关阅读:
    E. XOR and Favorite Number (莫队板子题)
    bzoj 2038: [2009国家集训队]小Z的袜子(hose)
    世风日下的哗啦啦族I (简单分块模板)
    Turtles (非纯分块)
    楼房重建
    智商问题
    A
    51 Nod 1640 天气晴朗的魔法( Kruskall )
    后缀数组
    51nod 1562 玻璃切割 (set)
  • 原文地址:https://www.cnblogs.com/zy1120192493/p/13137745.html
Copyright © 2011-2022 走看看