python3 深浅拷贝 数据类型 set 集合

python3 存储变量在内存空间开辟内容空间,这个内存空间会有一个地址,变量指向的就是该内容空间的地址

深浅拷贝

深拷贝:两份独立的数据,各自去进行操作,不会有相互影响,直接克隆一份数据, 使用模块 copy

>>> import copy
>>> a = [[1,2],3,4]
>>> b = copy.deepcopy(a)
>>> a[0][0]=10 #修改a中第一个list中的数据不会影响深拷贝的b中的数据
>>> print(a)
[[10, 2], 3, 4]
>>> print(b)
[[1, 2], 3, 4]

浅拷贝:拷贝后两份数据操作会有相互影响,copy的时候只对第一层生效,即是copy数据第一层的内存空间地址,第二层的数据会有另外的内容空间,但是在第一层的指向地址空间是不变的,如果进行修改第二层的数据,则第二层数据的指向地址发生变化,同时copy的两份数据都会发生变化.

>>> a = [[1,2],3,4]
>>> b = a.copy()  # 浅拷贝
>>> print(b)
[[1, 2], 3, 4]
>>> a[0][0] = 5 #修改a中的元素list中的值,b中的list元素的值也跟着改变,因为该list指向的内存空间是没有发生变化的
>>> print(a)
[[5, 2], 3, 4]
>>> print(b)

[[5, 2], 3, 4]


数据类型 set 

set的特点: 无序,不重复

set集合,把不同的元素集合到一起,集合对象是一组无序排列的可哈希的值,集合成员可以做字典的键

创建set 通过关键字去进行创建

>>> s= set('Li Lei')
>>> print(s)

{' ', 'e', 'L', 'i'}  #去重,重复的保留一个

可变集合 set

不可变集合 frozenset, 不能进行修改添加集合中的内容

set集合的访问只能通过迭代或者遍历的方式进行访问。


更新集合

添加 add() 直接添加add的内容

update() 将要添加的内容作作为一个序列添加到集合中,如果由重复只保留一个, update方法添加的是一个序列list

remove()直接删除元素

集合的pop()删除方法随机删除其中的一个内容,返回该删除的内容值

clear()方法清除集合中的元素内容

del 方法删除整个集合

>>> li=[1,2,3,'lilei']
>>> s = set(li)
>>> s. add('xx')
>>> print(s)
{1, 2, 3, 'lilei', 'xx'}
>>> s.update('yy')
>>> print(s)
{1, 2, 3, 'lilei', 'xx', 'y'}
>>> s.update('open')
>>> print(s)
{1, 2, 3, 'o', 'e', 'n', 'lilei', 'xx', 'y', 'p'}
>>> s.update([13,'hanmei'])
>>> print(s)
{1, 2, 3, 'o', 'e', 'n', 'lilei', 'xx', 13, 'y', 'hanmei', 'p'}
>>> s.update([13,'lilei'])
>>> print(s)
{1, 2, 3, 'o', 'e', 'n', 'lilei', 'xx', 13, 'y', 'hanmei', 'p'}
>>> s.pop()
1
>>> s.remove('lilei')
>>> print(s)
{2, 3, 'o', 'e', 'n', 'xx', 13, 'y', 'hanmei', 'p'}
>>> s.clear()
>>> print(s)
set()

集合的操作

>>> a = set([1,2,3,4,5])

>>> b = set([3,4,5,6,7])

交集 intersection() 运算符 &

两个集合相同部分取出作为一个新的集合

>>> a.intersection(b)

{3, 4, 5}

>>> a & b

{3, 4, 5}


并集  union()   运算符  |

两个集合合并为一个集合

>>> a.union(b)

{1, 2, 3, 4, 5, 6, 7}

>>> a | b
{1, 2, 3, 4, 5, 6, 7}


差级 difference()  运算符  -

>>> a.difference(b)   #a中有的但是在b中没有的

{1, 2}

>>> a-b

{1, 2}

>>> b.difference(a)  # b 中有的但是在a中没有的

{6, 7}

>>> b-a
{6, 7}

对称差集 ,反向交集,symmetric_difference()  运算符  ^

(两个集合的并集-交集得到的集合。)

>>> a.symmetric_difference(b)
{1, 2, 6, 7}
>>> a ^ b
{1, 2, 6, 7}


父集,子集    运算符 > , <

判断是否包含与被包含关系

>>> a = set ([1,2,3,4,5]) 

>>> b = set([1,2,3])
>>> b.issubset(a)  # b 是 a的子集   返回结果为True, b被包含于a
True
>>> b<a  
True
>>> a.issuperset(b)  #a 是 b 的父集,返回结果为True, a 包含 b
True
>>> a>b
True


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值