集合以及深浅拷贝和和小数据池--个人一些经验总结

小数据池 --缓存机制

==哦按段两边你的内容是否相等

a=10

b=10

print(a==b)

is 是

a=10

b=10

print(a is b) is 判断机遇内存地址就行判断

print(id (a))

print(id(b))

小数据池的数字范围:-5~256

代码块:一个py文件 一各函数 一个类 一个模块,终端中每一行都是一个代码块

支持三种数据类型

数字:在同一个代码块下,只要内容相同就采用相同的内存地址(-5以后就不是)

数字在做乘法的时候范围-5~256 1252 在 130 2 不行

数字在使用乘法的时候不能使用浮点数(-2.5*2)

字符串

在同意代码块下,只要内容相同就采用相同的内存地址

乘法的时候总长度不能超过20

乘法的时候中文,特殊符号成以1或0

布尔值

内容相同采用统一内存地址

小数据池

数字 -5~256

字符串

在统一代码块下,只要内容相容就采用相同的内存地址

乘法的时候总长度不能超过20

乘法的时候中文特殊符号乘以0

布尔值

小数据池的验证发放,必须脱离代码块才能进行验证

cmd终端查看

执行顺序

先执行代码块的规则,再进行小数据池的规则--驻留机制

必会

==判断等号两边的值是否相等

is 判断两边的内存地址是否相等

深浅拷贝

面试必问

  1. 赋值,浅拷贝,深拷贝

    1. 赋值
lst=[1,2,3,4,[5,6]]
lst1=lst
print(lst1)
print(lst)
print(id(lst1))
print(id(lst))

浅拷贝 ,浅拷贝的时候只会开辟一个新的容器列表其他元素使用的都是源列表中的元素.

lst=[1,2,3,[4,5,6]]
lst1=lst.copy
s.append(7)
print(lst)
print(lst1)
结果
[1,2,3,[4,5,6],7]
[1,2,3,[4,5,6]]

2.
s[-1].append(7)
print(lst)
print(lst1)
结果
[1,2,3,[4,5,6,7]]
[1,2,3,[4,5,6,7]]
#总结
#浅拷贝的时候只拷贝第一层元素
#浅拷贝在修改第一层元素(不可变数据类型)的时候,拷贝出来的新列表不进行改变
#浅拷贝在替换第一层元素(不可变数据类型)的时候,拷贝出来的新列表不进行改变
#浅拷贝在修改第一层元素中的元素(第二层)的时候,拷贝出来的新列表进行修改

深拷贝

import copy #导入
lst=[1,2,3,[4,5,6,]]
lst1=copy.deepcopy(lst)  #深拷贝
lst[-1].append(7)
print(lst)
print(lst1)
#结果
[1, 2, 3, [4, 5, 6, 7]]
[1, 2, 3, [4, 5, 6]]

2
lst.append(7)
print(lst)
print(lst1)
#结果
[1, 2, 3, [4, 5, 6], 7]
[1, 2, 3, [4, 5, 6]]

#深拷贝:深拷贝开辟一个容器空间(列表),不可变数据公用,可变数据数据类型(再次开辟一个新的空间),空间里的值是不可变的数据进行公用的,可变的数据类型再次开辟空间

深浅拷贝

  1. 赋值:

多个变量名指向同一个内存地址,一个变量对其进行操作,其他变量查看时都变动

  1. 浅拷贝:

lst[1:10]-- 是浅拷贝,浅拷贝只拷贝第一层元素,修改第一层元素是,新开辟的不进行改变

  1. 深拷贝:

不可变的数据类型共用,可变数据类型重新开辟一个空间,对源数据进行修改,深拷贝的内容不进行改变

可变类型新拷贝的变

不可变的新拷贝不变

集合--set

集合#没有值的字典 无需--不支持索引

天然去重 去重复

  1. 定义集合

s={1,"song",Flase,(1,2,3),12,1,12}

print(s)

##面试题
s=[1,2,3,1,33,56,3,4]
print(list(set(s)))
一行代码去重复 先转成集合去重再变成列表

s={1,2,3,4}

  1. s.add("66") #只添加一下

print(s)

{1,2,3,4,"66"}

  1. s.update("今天") # 迭代添加

print(s)

{1,2,3,4,"今","天"}

print(s.pop())  #pop有返回值
print(s)
s.remove(3)    #指定元素删除
s.clear()    #清空--set()  空集合  

先删在加
s.renmove(3)
s,add(2)
print(s)

for i in {1,2,3}:
    print(i)

其他操作

s1={1,2,3,4,5,6}

s2={2,3,4}

print(s1 & s2) # 交集

print(s1 | s2) #并集

print(s1 -s2) #差集

print(s1^s2) #反交集

print(s1>s2) #父集(超集)

print(s1<s2) #子集

print(frozenset(s1) #冻结集合

dic={frozenset(s1):1}

print(dic)

难免纰漏 欢迎交流

原文地址:https://www.cnblogs.com/sjf981012-/p/11170316.html

时间: 2024-10-03 02:17:53

集合以及深浅拷贝和和小数据池--个人一些经验总结的相关文章

小数据池 集合 深浅拷贝

小数据池 集合 深浅拷贝 一.小数据池 定义:小数据池是Python中一种提高效率的方式,固定数据类型使用同一个内存地址,支持数据类型:str,int,bool是一种缓存机制,特被称为驻留机制,各大编程语言中都有类似的东西. id() ----- 查看元素的内存地址 is 与 == 的区别 is 判断两个元素的内存地址是否相等 == 判断等号左右两边的元素的值是否相等 小数据池的规则 数字:-5~256 字符串: 字符串在做乘法(乘数不为1)的时候总长度不能超过20 自己定义的字符串的长度不受限

python入门(四)小数据池、深浅拷贝、集合

3.8 小数据池 小数据池:缓存机制(驻留机制) ==(用于判断两边的内容是否相等) a=10 b=10 print(a==b)# ==用于判断两边的内容是否相等 is(用于判断两边内存地址是否相等) a=10 b=10 print(a is b) #输出 True #小数据池总结 #1.数字范围:-5~256 #2.字符串: """ 1.同一代码下,内容相同则内存地址相同 2.乘法相乘总长度不能超过20 3.惩罚的时候中文.特殊符号乘以0 """

小数据池 深浅拷贝 集合

小数据池 小数据池 ---- 缓存机制(驻留机制) == 判断两边的内容是否相等 a = 10 b = 10 print(a == b) # True is 判断两边的值内存地址是否相等 a = 10 b = 10 print(a is b) # True print(id(a)) print(id(b)) #True 4329728336 地址是一样的 小数据池的数据范围: -5 ~ 256 a = -5 b = -5 c = -5 print(id(a)) print(id(b)) prin

小数据池、集合和深浅拷贝的个人理解

小数据池----缓存机制(驻留机制) ==:判断两边内容是否相等 is :判断基于内存地址进行判断 小数据池的数字范围-5~256 代码块:一个文件.一个函数.一个模块,终端中每一行是一个代码块 代码块支持的数据类型:数字:在同一个代码块中.只要内容相同就采用相同的内存地址(-6往后都不是)在做乘法的时候范围-5~256.数字在做乘法的时候不能使用浮点数(这些都是在cham中的结果) 字符串:在同一代码块中,只要内容相同就采用相同的内存地址.乘法的时候总长度不能超过20.乘法的时候中文.特殊符号

python基础4(小数据池,编码,深浅拷贝)

1.==与is == 比较值是否相等 is比较内存地址是否相同 2.小数据池 为了节省内存,当数据在一个范围里的时候,两个值相同的变量指向的是小数据池里的同一个地址 数字范围:-5 ~ 256 num1 = 3 num2 = 3 i1 = id(num1) i2 = id(num2) #此时i1==i2 3.编码 ascii:     8位       1字节     表示一个字符 unicode:  32位     4字节     表示一个字符 utf-8 英文    8位    1字节 欧洲

小数据池 深浅拷贝

代码块,小数据池 在Python中id是内存地址, 只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加到内存中,这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,可以利用id()去获取这个数据的内存地址: s = "abc" print(id(s)) #2690615639712 is 和 == ==是比较两边数据是否相等,而is是判断两边内存地址是否相等.如果两边内存地址相等,那么实际是指向同一个内存地址. 内

小数据池和深浅拷贝

小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于一个字符时会缓存 超过一个字母但是只有下划线,字母,数字组成也会缓存 如果字符串乘法,那小于等于20个就会缓存,超过则开辟新的内存 手动缓存,需要调用工具 from sys import intern a=intern("[email protected]"*5) b=intern(&qu

Python基础之小数据池及深浅拷贝

一.小数据池 == (等于) == 官方:判断等号两边的内容是否相同 ? 白话:判断两个人长得是不是一样 is ? 官方:判断两边的内容是不是一个 ? 白话:判断这两个人是不是一个人 a = 10000 b = 10000 print(a == b) is 是通过内存地址进行判断 print(id(a),id(b)) 输出结果 ,内存地址一致 代码块:一个py文件,一个函数,一个模块,一个类,交互模式(终端)下的每一行 先执行代码块,然后小数据池! 代码块机制内容:Python在执行同一个代码块

集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)

小数据池 #int ==比较数值 is 比较内存地址 id 测试内存地址 #str 不能含有特俗字符 单个元素*数字,不能超过21 i1 = 'a'*20 i = 'a'*20 id一样 i1 = 'a'*21 i = 'a'*21 id不一样 编码 ascii   英文的数字,字母,特殊字符 字节 8位表示一个字节 字符 内容的最小组成单位 abc  a一个字符 中国 中  一个字符 unicode :万国码 期初 两个字节,表示一个字符2**16不够用 升级 四个字节,表示一个字符2**32