Python菜鸟起飞day4--深浅拷贝、集合set

目录

一、深浅拷贝
##1.前奏
##2.浅拷贝
##3.深拷贝
二、集合set
##1. 创建集合(python3)
##2. set中操作符
##3.常用的基本操作
##4. 应用–去重


一、深浅拷贝

1. 前奏

不可变数据类型:数字,字符串,元组
可变数据类型:列表,字典
所谓不可变,就是在修改的时候,原来的内存空间存储的还是原来的内容,然后开辟新的空间,赋值,然后再使变量指向这个新的内存空间,看起来好像是变了,变得是变量的指向。
所谓可变数据类型,就像a指向b,b指向c,通过a修改b,使得b指向d,在a看来,一开始通过b能取出c,修改之后,通过b能取出d,所以a觉得,是b变了,而b压根就没变,只是它的指向变了。大概就是这个意思。比不可变的多了一层套路,跟c语言里的指针有点相似的尿性。

2. 浅拷贝

修改前:
一个是直接进行修改,另一个通过指针进行修改,通过的这个指针直观表现为一个列表或者一个字典。
在这里插入图片描述
修改后:
在这里插入图片描述

3. 深拷贝

import copy

s = [[1,2],'alex','alvin']
s3 = copy.deepcopy(s)
s3[0][1] = 3
print(s,s3)

输出结果:

[[1, 2], 'alex', 'alvin'] [[1, 3], 'alex', 'alvin']

二、集合类型

1. 创建集合(python3)

parame = {value01,value02,...}
或者
set(value)

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
a = set('abracadabra')#这里会将字符串中的每个字符当做一个独立的元素
b = set([('zzh','zihan','zhuzihan'),'zzh'])

不可变集合frozenset();类似元组,一经创建不可修改。

2. set中操作符

操作符等价函数备注
|union()联合;求并集
&intersection()求交集
-difference()求差集
^symmetric_difference()对称差集 = (a∪b)- (a∩b)

注:

函数名说明
intersection_update()两个或更多集合中计算交集。 intersection_update() 方法是在原始的集合上移除不重叠的元素。x.intersection_update(y)
difference_update()求两集合差集, difference_update() 方法是直接在原来的集合中移除元素,没有返回值。x.difference_update(y)
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

3.常用的基本操作

函数名说明
add( x )将x作为一个整体添加到集合中
update( x )将一个序列添加到集合中,参数可以是列表,元组,字典,字符串等,x 可以有多个,用逗号分开。update的参数是可迭代的对象(见注)
remove( x )将元素x从集合中移除,若元素不存在,则会发生错误
discard( x )将元素x从集合中移除,若元素不存在,不会发生错误
pop()随机删除元素
len(s)计算集合 s 元素个数。
clear()清空集合
x in s判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
copy()拷贝集合
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集

注:
可迭代的对象:“实现了__inter__方法的对象就叫做可迭代对象”,__inter__方法的作用就是返回一个迭代器对象。直观理解就是能用for循环进行迭代的对象就是可迭代对象。比如:字符串,列表,元祖,字典,集合等等,都是可迭代对象。详见:迭代器。

4. 应用–去重

l = [1,2,3,3,2,1,5,6,7]
print(list(set(l)))

输出结果:

[1, 2, 3, 5, 6, 7]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值