python基础【第八篇】
day06笔记
1.小数据池
is 与 ==的区别
is :判断两边的内存地址是否相同
==:判断两边的值是否相同
python中的驻留机制:
数字: -5 ~ 256
字符串: 3.6 乘法时总长度不能超过20
python中的代码块:
数字: -5 ~ 正无穷
字符串: 3.6 乘法时总长度不能超过20
2.深浅拷贝
浅拷贝遇见可变数据类型的时候,具有联动效应
深拷贝遇见可变数据类型的时候,不具有联动效应
浅拷贝:只拷贝第一层的内存地址
示例
dic = {1:2,2:[]}
dic1 = dic.copy()
dic[2]=4
print(dic)
print(dic1)
dic = {1:2,2:[]}
dic1 = dic.copy()
dic[2].append(9)
print(dic)
print(dic1)
深拷贝:不管嵌套多少层,不可变数据类型公用,可变数据类型开辟新的内存空间**
示例
import copy
lst = [1,2,3,[6,7,8,9]]
lst2 = copy.deepcopy(lst)
lst[1]=10
lst[-1].append(6)
print(lst)
print(lst2)
赋值 : 多个变量名指定同一个内存地址就是赋值
3.集合
集合相当于一个没有值得字典
集合的特性:天然去重
集合是无序的可变的
集合的基本操作方法:
s = {1,2,3,4}
# 增
s.add(5)
print(s)
s.update(["1","2","3"]) # 迭代更新
print(s)
# 删
s.remove(1)
print(s)
print(s.pop()) #删除第一个值
print(s)
s.clear() # 清空
print(s)
# 改
先删后加
数据转换
# 查
利用for循环
# 其他操作
交集 &
并集 |
差集 -
反交集 ^
超集 >
子集 <
v1 = {'呵呵','123','板哥','王二麻子'}
v2 = {'123','王二麻子'}
print(v1 & v2)
print(v1 | v2)
print(v1 - v2)
print(v2 - v1)
练习题
# 从随机的36个数中,抽选7个不重复的数字
from random import randint
ls = []
while len(ls) < 7:
s = randint(1, 36)
if s not in ls:
ls.append(s)
print(ls)
from random import randint
s = set()
while len(s) < 7:
s.add(randint(1, 36))
print(s)