python 深浅拷贝,集合 ,小数据池 操作

== 和is 的区别

  • 是判断两边的值是否相同
  • is是判断is 两边的内存地址是否相同
a = 10
b = 10
print(a == b) True

a = 10
b = 10
print(a is b) True

小数据池与代码块

小数据池与代码块的驻留机制的优点:节省空间,提高效率
优先级:满足条件下先用代码块,如不满足再用小数据池
小数据池的有效范围:
int -5~256 
str 字符串相乘总超度不能超过20 3.6版本20,3.7版本4096
代码块的有效范围:
int -5~正无穷 
str 字符串相乘总超度不能超过20 3.6版本20,3.7版本4096

深浅拷贝和赋值

浅拷贝只拷贝第一层数据。
示例:
lst = [1,2,3,[4,5],6]
lst1 = lst.copy
lst[0] = 5                把1修改成5,lst1内容不变
lst[3].append(6)      在4,5列表中添加一个6,lst1也会跟着改变
深拷贝不管嵌套多少层,不可变数据共用,可变数据开辟新空间。
示例:
lst = [1,2,3,[4,5],6]
lst1 = lst.copy
lst[0] = 5                
lst[3].append(6)      在4,5列表中添加一个6,lst1不会跟着改变

赋值:
赋值就是一串数据有两个标签。

集合

集合是无序的
集合天然去重
集合里面不能放列表,可以放元组
集合的增删改查
增:
s = {1,2,3,4,5}
s.add(6) 在5后面添加6
s.update()只能添加可迭代对象(数字不行)
删:
s = {1,2,3,4,5}
s.pop() 删除第一个数(1)
s.remove(3) 指定元素删除,列表内3将被删除
s.clear 清空整个列表,清空后是一个空集合set()
del s 这个是直接删除s这个集合,print(s)是报错的,因为已经删除了
改:
s = {1,2,3,4,5}
1.先删再添加
2.数据转换
查:
for循环查
s = {1,2,3,4,5}
for i in s:
	print(i)

集合的其他操作

#s1 = {1,2,3,(4,5,6)}
#s2 = {1,2,3,4,5,(1,2,3)}
# print(s1 | s2) 并集 一样的去重,不一样的保留
# print(s1 & s2) 交集 一样的保留,不一样的去除
# print(s1 ^ s2) 补集 相同的删除,不相同的保留
# print(s2 > s1) 超集 就是s2里面有s1的数据就是超集,返回True
# print(s1 < s2)  #子集 就是s1的内容在s2内就是子集,返回False
# print(s1 - s2) 差集 用s1里的内容减s2的内容,相同就删除,不相同就保留
# print(s2 - s1) 差集 用s2里的内容减s1的内容,相同就删除,不相同就保留
原文地址:https://www.cnblogs.com/biyunfeng/p/11934583.html