python中的赋值与深浅拷贝】的更多相关文章

Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的数据,此时若执行语句data_01 = data,则现在该份数据有了两个名称(data和data_01),其余都不发生改变,使用任何一个名称对数据进行操作,那么用另外一个名称拿数据时,数据会呈现之间发生的改变.示例如下: 图中,给列表分配了两个名称a与b,对a做改变时b会同样改变,对b做改变时a也会…
python中,A object  = B object  是一种赋值操作,赋的值不是一个对象在内存中的空间,而只是这个对象在内存中的位置 . 此时当B对象里面的内容发生更改的时候,A对象也自然而然的会跟着更改. 1 name = ["root","admin"] 2 cp_name = name # 对cp_name进行赋值操作 3 4 # 对name列表进行插入 5 name.append('root_temp') 6 print(name,cp_name) #…
import copy lt = [1, 2, [3, 4]] # 赋值会增加一个引用,访问的都是同一数据 # lt2 = lt # 浅拷贝:只拷贝对象本身,里面的元素只会增加一个引用 lt2 = lt.copy() # 专门的拷贝函数,也是浅拷贝,等价于上面的拷贝 lt2 = copy.copy(lt) # 深拷贝:拷贝对象本身,对象中的元素也进行拷贝 # lt2 = copy.deepcopy(lt) lt[0] = 100 lt[2][0] = 30 print(lt) print(lt2…
Python当中对于拷贝,分为两种类型.一种是数字和字符串,另一种就是列表.元组.字典等其他类型了. 一.数字和字符串的拷贝 1.赋值 举个栗子: a1 = 123123 a2 = 123123 # a2 = a1 # 赋值 print(id(a1)) # 通过id()函数来打印变量在内存当中的地址 print(id(a2)) 输出结果是: 1959780298352 1959780298352 在以上代码块当中,a2与a1所赋的值是一样的,都是数字123123.因为python有一个重用机制,…
字符串 join() 格式:   "拼接的东西".join(可迭代对象) 可以加列表转换成字符串 lis = ['a','b','c','d'] s = "//".join(lis) print(s) #结果 a//b//c//d 相反 split()   可以加字符串转换成列表       切割 列表和字典在循环的时候不能直接被删除需要把要删除的内容记录在新的列表中 然后循环新列表,删除字典或列表 例如 lis = ['a','b','c','d','e'] fo…
首先创建一个列表 a=[[1,2,3],4,5,6] 一.赋值 a=[[1,2,3],4,5,6]b=aa[0][1]='tom'print(a)print(b)结果: [[1, 'tom', 3], 4, 5, 6][[1, 'tom', 3], 4, 5, 6] a=[[1,2,3],4,5,6]b=ab[0][1]='tom'print(a)print(b)结果:[[1, 'tom', 3], 4, 5, 6][[1, 'tom', 3], 4, 5, 6]总结:赋值不管是对a列表改变还是…
1.set集合 特点:无序,不重复,元素必须可哈希(不可变) 作用:去重复 本身是可变的数据类型.有增删改查操作.{集合的增删改查操作应用较少,这里不做详细介绍了(这里的增有一个方法update注意这个是迭代添加)} frozenset()冻结的集合.不可变,可哈希. s = {"哈哈哈","嘿嘿嘿","呵呵呵"} s1 = frozenset(s) print(type(s1)) #<class 'frozenset'> 2.深浅c…
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况. 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身. 引用…
python——赋值与深浅拷贝 https://www.cnblogs.com/Eva-J/p/5534037.html 啥都不说,看这个博主的文章!…
赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c=a 对象是[1,2,3].分别由a.b.c三个变量其建立了相应的引用关系.而三个变量都不独占对象[1,2,3],或者说.能够通过不论什么一个变量来改动[1,2,3]这个对象. >>> c.append(4) >>> c [1, 2, 3, 4] >>> a…
1.深浅拷贝 在Python中将一个变量的值传递给另外一个变量通常有三种:赋值.浅拷贝.深拷贝 Python数据类型可氛围基本数据类型包括整型.字符串.布尔及None等,还有一种由基本数据类型作为最基本的元素所组成的像列表.元组.字典等. 在Python中基本数据类型的赋值.深浅拷贝没有任何意义,都是指向同一块内存地址,也不存在层次问题. 下面看基本数据类型的深浅拷贝 import copy n1 = 'abc' n2 = n1 n3 = copy.copy(n1) n4 = copy.deep…
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式. 在学习过程中,一开始对浅拷贝理解很模糊.不过经过一系列的实验后,我发现对这三者的概念有了进一步的了解. 一.赋值 赋值算是这三种操作中最常见的了,我们通过一些例子来分析下赋值操作: str例 复制代码代码如下: >>>…
之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4] q=p print(p) print(q) q.append(5) print(q) print(p) #输出 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5] 发现改变q的值,p也同时改变. 如果要向C#…
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print(id(a)) # 140367329543360 a['a'] = 'hhhh' print('id a:' + str(id(a))) # id a:140367329543360 print('a:' + str(a)) # a:{'a': 'hhhh'} print('id b:' + st…
参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=”和C++中的赋值操作"="还是有很大区别的,这点需要注意! 比如例1: C++和python操作后会得到同样结果,但是两者在PC中的操作其实不同: (1)python:代码在内存中的操作示意图: 首先内存会为3创建一个数据单元,再让b指向这个单元:然后b+5得到8,内存又会为这个8创建一个…
深浅copy 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 import copy 2 # ######### 数字.字符串 ######### 3 n1 = 123 4 # n1 = "i am alex age 10" 5 print(id(n1)) 6 # ## 赋值 ## 7 n2 = n1 8 print(id(n2)) 9 # ## 浅拷贝 ## 10 n2 = copy.copy(n1) 11 print(…
##################################### 预备知识一——python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况. 在高级语言中,变量是对内存及其地址的抽象. 对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身. 引用语义:在python中,变量保存的是对象(值)的引用…
根据数据类型分为两部分进行剖析: int.str类型      list.tuple.dict类型等 1.  int.str类型 [int类型实例] >>> import copy # 导入copy模块 >>> a1=11 >>> a2=a1 # 直接赋值引用 >>> a3=copy.copy(a1) # 浅拷贝 >>> a4=copy.deepcopy(a1) # 深拷贝 >>> id(a1),i…
在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域. 如图所示,当改变一个变量的值,另一个的值也会跟着改变.也就是浅拷贝. 若要实现深拷贝则需要引入copy模块,如下图所示,两个变量就相互独立了.…
拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个时候使用赋值就不够明智了.python为这种需求提供了copy模块.提供了两种主要的copy方法,一种是普通的copy,另一种是deepcopy.我们称前者是浅拷贝,后者为深拷贝. 深浅拷贝一直是所有编程语言的重要知识点,下面我们就从内存的角度来分析一下两者的区别. 浅拷贝 首先,我们来了解一下浅拷…
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不成立,将值2赋给result变量 eg:name = "tina" if 1==1 else "fei" name = "tina" if 1!=1 else "fei" print(name) 执行结果如下: fei  小练习:…
本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # ######### 数字.字符串 ######### n1 = 123 # n1 = "i am alex age 10" print(id(n1)) # ## 赋值 ## n2 = n1 print(id(n2)) # ## 浅拷贝 ## n2 = copy.copy(n1…
作为一个自学python的小白,平时用到深浅拷贝的机会很少,因此对其也是一知半解.但是,作为一个立志成为后端工程狮的男人,眼里揉不了沙子,于是专门花时间补了补课,在此记录一下学习心得.    在讲深浅拷贝之前,首先看一下赋值: a = "小新" b = a print(b) >> "小新" b = "辣眼睛" # 对b重新赋值6 print(b)7 >> "辣眼睛" print(a) >>…
(一)yield和yield from 转自:理解yield   yield from (1)yield 1.通常的for…in…循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文件.它可以是mylist = [1, 2, 3],也可以是mylist = [x*x for x in range(3)]. 它的缺陷是所有数据都在内存中,如果有海量数据的话将会非常耗内存. 2.对比可迭代对象,迭代器其实就只是多了一个函数:__next__(),可以不再使用for循环来…
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_".join(li) print(s) # 结果为:李嘉诚_何炅_海峰_刘嘉玲 li = '黄花大闺女' s = "_".join(li) print(s) # 结果为:黄_花_大_闺_女 2,列表相关: 循环删除列表中的每一个元素,有如下代码,注意结果并分析原因: li = [11…
本节主要内容:1. 基础数据类型补充2. set集合3. 深浅拷贝主要内容:一. 基础数据类型补充首先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的自己看一看就可以了.我们补充给一个字符串基本操作 li = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"] s = "_".join(li) print(s) li = "黄花大闺女" s = "_&q…
一.数据基本类型之set集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key set集合,是一个无序且不重复的元素集合 1.创建 s = set() #创建空集合 s = {'values1','values2'} #非空集合 2.转换 l = [1,2,5,11] t = (11,22,12) #元组转集合 st2 = set(t) #列表转集合 st = set(l) print(st) print(st2) 3.常用支…
一.知识点补充 1.1字符串的基本操作 li =["李李嘉诚", "麻花藤", "⻩黄海海峰", "刘嘉玲"] s = "_".join(li) print(s) li = "黄花大闺女" s = "_".join(li) print(s) 1.2列表: 循环删除列表中的每一个元素 li = [, , , ] for e in li: li.remove(e) pri…
一.Python的变量及其存储 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的本身. 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义.采用这种语义,变量所需的存储空间大小一致,因为变量只是保存了一个引用.也被称为对象语义和指针语义. 值语义:把变量的值直接保存在变量的存储区里,这种方式称为值语义.采用这种存储方式,每一个变量在内存中…
0.前言 工作忙起来后,许久不看算法,竟然DFA敏感词算法都要看好一阵才能理解...真是和三阶魔方还原手法一样,田园将芜,非常可惜啊. 在DFA算法中,第一步是需要理解它的数据结构,在此基础上,涉及到一些Hashmap的赋值.这里的赋值非常有趣,三个Hashmap翻来覆去赋值,就解决了敏感词表的初始化. 里面都是属于下文中的Hashmap“浅拷贝”,那么究竟Java中的Hashmap有哪些拷贝方法呢? 1.测试代码 HashMap hm_source = new HashMap(); HashM…