美文网首页
day7-拷贝相关

day7-拷贝相关

作者: 2ez4ddf | 来源:发表于2018-11-13 17:57 被阅读0次

一.==和is

==——判断两个数据的值是否相等
is——判断地址是否相等
python数据存储:

  1. 给变量赋值的时候,如果数据的类型是数字或者字符串,不会直接开辟空间存数据。
    而是先在数字、字符串对应的缓存区里面去查看是否已经存储过对应的数据。
    如果已经存了,直接将之前的数据对应的地址赋给变量。
    如果没有存储,才会开辟空间存储数据。
    其他类型的数据,都是直接开辟空间村塾数据。然后再把地址返回。
  2. 容器类型中的元素在容器中不是直接存的值,而是元素值对应的地址
list1 = [1,2,3]
list2 = [1,2,3]
list3 = list2
print(list1 == list2)#True
print(list1 is list2)#False
print(list2 is list3)#True
print('=======',list1[0] is list2[0])#True#列表中元素的地址,数字和字符串

#只有字符串和数字会在内存缓冲区产生地址
number1 = 10
number2 = 10
print(number1 is number2)#True 缓冲区地址相同

二.浅拷贝和深拷贝

copy.copy(对象)——浅拷贝(直接拷贝元素的值产生一个新的地址)
copy.deepcopy(对象)——深拷贝(不会直接复制地址,而是将地址对应的值拷贝一份产生新的地址)

numbers1 = [1,2,3]
numbers2 = [10,20,30]
list1 = [numbers1,numbers2]
print('1.浅拷贝:')
# list2 = list1
# list1.append(111)
# print(list2,'~~~~',list1)#[[1, 2, 3], [10, 20, 30], 111] ~~~~ [[1, 2, 3], [10, 20, 30], 111]
list2 = list1.copy() #浅拷贝list2 = copy.copy(list1)
print('修改前list1',list1)#修改前list1 [[1, 2, 3], [10, 20, 30]]
print('修改前list2',list2)#修改前list2 [[1, 2, 3], [10, 20, 30]]
print('针对list1进行修改')#针对list1进行修改
list1.append(111)
list1[0].append(100)
print('修改后list1',list1)#修改后list1 [[1, 2, 3, 100], [10, 20, 30], 111]
print('修改后list2',list2)#修改后list2 [[1, 2, 3, 100], [10, 20, 30]]



numbers1 = [1,2,3]
numbers2 = [10,20,30]
list1 = [numbers1,numbers2]
print('2.深拷贝:')
list2 = copy.deepcopy(list1)
print('修改前list1',list1)#修改前list1 [[1, 2, 3], [10, 20, 30]]
print('修改前list2',list2)#修改前list2 [[1, 2, 3], [10, 20, 30]]
print('针对list1进行修改')#针对list1进行修改
list1.append(111)
list1[0].append(100)
print('修改后list1',list1)#修改后list1 [[1, 2, 3, 100], [10, 20, 30], 111]
print('修改后list2',list2)#修改后list2 [[1, 2, 3], [10, 20, 30]]


相关文章

  • day7-拷贝相关

    一.==和is ==——判断两个数据的值是否相等is——判断地址是否相等python数据存储: 给变量赋值的时候,...

  • ArrayList源码解析

    属性分析 构造方法 其他方法 add相关方法 扩容相关方法 对象是否存在、索引判断 clone(浅拷贝) 深拷贝(...

  • pjsip编译

    注:相关命令直接拷贝会有问题,如需拷贝转载地址:https://www.tuicool.com/articles/...

  • C++ 拷贝控制(二) — 移动构造函数和移动赋值运算符

    相关文章: C++ 拷贝控制(一) — 析构函数、拷贝构造函数与拷贝赋值函数 C++ 引用类型 — 左值引用、常引...

  • iOS对象的拷贝

    一 :拷贝的相关概念 copy语法的目的:改变副本的时候,不会影响到源对象; 深拷贝:内容拷贝,会产生新的对象。新...

  • iOS关于copy,mutablecopy;深拷贝,浅拷贝的浅见

    首先我们先搞清楚深拷贝和浅拷贝的概念吧: 深拷贝:内存地址的拷贝,重新开辟一块内存区域,和原来的内存区域不相关。 ...

  • iOS知识点汇总

    UI试图 UITableView相关 1.cell的复用2.数据源同步: 并发访问、数据拷贝(缺点:拷贝数据产生内...

  • 2020-01-29

    day7-庐州月不习惯用思维导图 还是用的onenote

  • iOS--拷贝相关题

    1、什么是深拷贝什么是浅拷贝?浅拷贝和深拷贝的区别 * 浅拷贝(shallow copy):指针拷贝,对于被拷贝对...

  • JS 一些解决方案记录

    时间相关 时间格式化 Unix时间戳转换 JS 对象相关 利用 json 转换进行对象深拷贝 JSON.strin...

网友评论

      本文标题:day7-拷贝相关

      本文链接:https://www.haomeiwen.com/subject/bywlfqtx.html