700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python学习Day6 元组 字典 集合set三类数据用法 深浅拷贝

python学习Day6 元组 字典 集合set三类数据用法 深浅拷贝

时间:2024-03-18 05:23:23

相关推荐

python学习Day6 元组 字典 集合set三类数据用法 深浅拷贝

一、深浅拷贝

1.值拷贝 ls1 = ls2不开辟空间,指针跟着走。(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变。)(ls1内部的所有类型的值发生改变,ls2都不会随之变化)

2. 浅拷贝 ls3 = ls1.copy() ls3新开辟空间,但数据内里面每个元素的地址同ls1。所以ls1中不可变类型变了,相当于ls1重新指到了一个新的地址,ls3还指向原来的那个地址。如果s1中可变类型的值变了,因为地址没变,只是值变了。所以ls3中可变类型的值也会一起变。(ls1内部的可变类型值发生改变,ls3会随之变化)

3. 深copy :ls4 = deepcopy(ls1) ls4中所有的数据都会重新开辟一个全新的空间,由于有优化机制,所以不可变类型会指向同一个地址。又由于不可

变类型值变了,地址一定会变,所以deepcopy从内致外都不会受s1的影响,你怎么变跟我没关系。(ls1内部的所有类型的值发生改变,ls4都不会随之变化)

二、数据用法: 元组、字典、集合set

元组: 可理解为不可变列表

1.值可以为任意类型

2. 可以存放多个值------可以进行成员运算

3.可以存放重复的值 - 可以计算成员出现的次数

4.有序存储 - 可以通过索引取值,可以切片

常用操作:1.索引取值,正反取:print(t1[1],print(t1[-3])

2.运算(拼接),print((1, 2) + (2, 3))

3. 长度 len(t1)

4. 切片print((2, 1, 3)[::-1])

5. 成员运算 print(True in t1);print(False in t1) # False == 0, t1中如果有0或False,该结果都是True

6.for循环for obj in t1:print(obj, end=" ")

方法: count : print(t1.count(0)) # 对象0在元组中出现的次数;

index: print(t1.index(123, 4, len(t1))) # 对象123在区间4~末尾第一次出现的索引

字典相关 概念 :容器(集合):存放多个值的变量

单列容器(系统中的单列容器很多):list | tuple

双列容器(map):只有dict,存放数据 成对出现,dict存放数据采用 key-value键值对方式

字典中的key必须为不可变类型,因为key是取value的唯一依据,key一旦被确定,就不能被改变,所以只能是不可变类型

字典中的value可以为任意类型,value是用来存放世间所有存在的数据

key要确保唯一性,不能重复,值可以重复,并且可以被改变以此推到 => 字典为可变类型

dic = {'a': 10, 1: 20, True: 30, (): 40} # 1和True都是1,key具有唯一性,所以只保留最后一次值

print(dic) # {'a': 10, 1: 30, (): 40}

字典的定义:1.空字典{}、2.用map映射创建字典d3 = dict({'a': 1, 'b': 1})、

3.用关键字赋值方式:d4 = dict(name='Bob', age=18) # 参数=左侧的名字就是合法的变量名,都会被转化为字符串形式的key

4.创建有多个key值采用默认值的方式: 默认值不写默认None,也可以自定义value:d5 = {}.fromkeys('abc', 0)---返回一个新字典。

字典的操作增/改: 字典名[key] = 值 => key已存在就是修改值,不存在就是新增值:dic['c'] = 3

查:字典名[key]:只能查找已有的key,没有崩溃,

引入 dict.get(key, default =None) key -- 字典中要查找的键 default -- 如果指定键的值不存在时,返回该默认值.

清空dic.clear()

pop(k):删除指定key的value并返还删除的value :res = dic.pop('a')

从dic末尾删除,返还(key, value)形成的元组:res = dic.popitem()

其他方法: 1.更新 dic.update(d) 原字典中,有相同的键,value就以新的覆盖,没有键,就新增进去,原字典中多出来的就保留。----将一个字典添加到另一字典中

2.带默认值的新增 dic.setdefault('z', 100): 新增key,key已有,啥事不干,没有添加key,及value

3.字典的循环: for得到key

4.循环keys 效用等同for:for k in dic.keys()

5.循环values :for v in dic.values()

6.同时循环key和value 得到(key, value) :for res in dic.items()

7.重点:for k, v in dic.items() 得到key, value 等同解压赋值

集合类型空集合:不能用{},因为用来标示空字典,表示形式 :s = set()

定义:1.set为可变类型 - 可增可删 2.set自带去重存储 - set中不能存放重复数据

3.set为无序存储 - 不能索引取值

4.set为单列容器 - 没有取值的key-----不能取值

方法:1.增 s.add('1')

2. s.update({'2', '3'}) ,有就什么都不干,没有就新增

3.合集:两个的合体 | print(py | Lx)、print(py.union(lx))

4.对称交集抛出共有的合体 ^ : print(py ^ lx)、print(py.symmetric_difference(lx))

5.差集:独有的print(py.difference(lx))----相当于减法

6.比较 :前提一定是包含关系:s1 = {'1', '2'} ; s2 = {'2'} ;print(s1 < s2)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。