python中深拷贝,浅拷贝等重要的知识点

python中的几个比较重要的内容(初学者容易模糊)

1、python中自动化内存管理

 a=10000
 b=20000
 a= a + b   #发生了什么事?(将30000赋值给a,10000将被回收释放)
 c = a       #发生了什么事?   (a和c同时绑定在30000同一对象上)  

python中 关联/绑定/引用的含义:
在python中,变量没有类型
关联/绑定/引用都是指一个变量和一个对象的关联关系

*python的内存管理是自动化的, 即每个对象会记录几个变量引用自身,当引用的数量为0时此对象被销毁,此种自动化内存管理的方式叫引用计数

2、continue和break的区别:
continue是用于循环语句(while,for)中,不再执行本次循环continue之后的语句,重新开始一次新的循环。 在while语句中执行continue,将会直接跳转到while语句的真值表达式处重新判断循环条件。在for循环语句中执continue语句,将会从可迭代对象中取下一个元素,绑定变量后再次进行循环
break用于循环语句(while,for语句)中,用来终止当前循环语句的执行,break语句执行后,此循环语句break之后的语句将不再执行。break语句通常和if语句组合使用 break语句终止循环时else子句的语句将不会执行。break语句只能终止当前循环语句的执行,如果循环嵌套时,不会跳出嵌套的外重循环。

3、python中浅拷贝和深拷贝的含义
浅拷贝(shallow copy)
是指在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程

             示意:

                     >>> L = [3.1,3.2]
                    >>> L1 = [1,2,L]
                    >>> L2 = L1.copy()       #浅拷贝
                    >>> print(L1)
                    [1, 2, [3.1, 3.2]]
                    >>> print(L2)
                    [1, 2, [3.1, 3.2]]

                    >>> L2[2][0] = 3.14
                    >>> L2
                    [1, 2, [3.14, 3.2]]
                    >>> L1
                     [1, 2, [3.14, 3.2]]

                     >>> L
                     [3.14, 3.2]

深拷贝(deep copy):
赋值对象及对象关联的对象一起复制过程叫深拷贝

             示例: >>> import copy
                       >>> L = [3.1,3.2]
                      >>> L1 = [1,2,L]
                      >>> L2=copy.deepcopy(L1)
                       >>> L2[2][0] = 3.14
                       >>> L1
                       [1, 2, [3.1, 3.2]]
                       >>> L2
                       [1, 2, [3.14, 3.2]]
                       >>> L
                       [3.1, 3.2]

4、几个小知识点(个人觉得比较实用)
① 字符串的文本解析方法:
S.split(sep=None) 将字符串,使用sep作用分隔符分割S字符串,返回分割后的字符串列表,当不给定参数时,用空白字符作为分隔符分割。
S.join(iterable) 用可迭代对象中的字符串,返回一个中间用S进行分割的字符串。

②列表推导式:
是用可迭代对象创建列表的表达式
作用:用简易方法生成列表
语法:
[表达式 for 变量 in 可迭代对象]

  >>> L = [i**2  for  i  in  range(1,10)]
  >>> L
  [1, 4, 9, 16, 25, 36, 49, 64, 81]


[ 表达式 for 变量 in 可迭代对象 if 真值表达式 ]

L = [i for i in range(1,10) if i%2==1]
L
[1, 3, 5, 7, 9]

③列表推导式的嵌套:
语法:
[表达式 for 变量1 in 可迭代对象1 if 真值表达式1
for 变量2 in 可迭代对象2 if 真值表达式2 …]

示例:将[10,20,30]中的元素与列表[1,2,3]元素分别相乘,将得到的元素放于一个列表中
L= [x +y
for x in [10,20,30]
for y in [1,2,3]
print(L)]
#[11,12,13,21,22,23.31.32.33]

*打个小广告啊
若是需要什么绿色软件的可以点击关注下面公众号,如你所想,如你所愿!!!
这里写图片描述

猜你喜欢

转载自blog.csdn.net/extremelove520/article/details/82667430
今日推荐