集合与内存
- 集合 set
-
无序
-
无重复
v = {1,2,3,4,5,6,99,100}
疑问:v = {}
"""
None
int
v1 = 123
v1 = int() --> 0
bool
v2 = True/False
v2 = bool() -> False
str
v3 = ""
v3 = str()
list
v4 = []
v4 = list()
tuple
v5 = ()
v5 = tuple()
dict
v6 = {}
v6 = dict()
set
v7 = set()
"""
-
集合独有功能
- add #添加
- discard #删除
- update #更新
- intersection #取交集
- union #取并集
- difference #取差集
- symmetric_difference
-
公共功能
- len
v = {1,2,'李邵奇'}
print(len(v)) - for循环
v = {1,2,'李邵奇'}
for item in v:
print(item) - 索引【无】
- 步长【无】
- 切片【无】
- 删除【无】
- 修改【无】
- len
-
嵌套问题
# 1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable)
# info = {1, 2, 3, 4, True, "国风", None, (1, 2, 3)}
# print(info)
# 2. hash -> 哈希是怎么回事?
# 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。# 3. 特殊情况 # info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)} # print(info) # info = { # 1:'alex', # True:'oldboy' # } # print(info)
-
内存相关
-
示例一
v1 = [11,22,33]
v2 = [11,22,33]v1 = 666 v2 = 666 v1 = "asdf" v2 = "asdf" # 按理 v1 和 v2 应该是不同的内存地址。特殊: 1. 整型: -5 ~ 256 2. 字符串:"alex",'asfasd asdf asdf d_asdf ' ----"f_*" * 3 - 重新开辟内存。
-
示例二:
v1 = [11,22,33,44]
v1 = [11,22,33] -
示例三:
v1 = [11,22,33]
v2 = v1# 练习1 (内部修改) v1 = [11,22,33] v2 = v1 v1.append(666) print(v2) # 含 666 # 练习2:(赋值) v1 = [11,22,33] v2 = v1 v1 = [1,2,3,4] print(v2) # 练习3:(重新赋值) v1 = 'alex' v2 = v1 v1 = 'oldboy' print(v2)
-
示例四
v = [1,2,3]
values = [11,22,v]# 练习1: """ v.append(9) print(values) # [11,22,[1,2,3,9]] """ # 练习2: """ values[2].append(999) print(v) # [1, 2, 3, 999] """ # 练习3: """ v = 999 print(values) # [11, 22, [1, 2, 3]] """ # 练习4: values[2] = 666 print(v) # [1, 2, 3]
-
示例五
v1 = [1,2]
v2 = [2,3]v3 = [11,22,v1,v2,v1]
-
查看内存地址
"""
v1 = [1,2,3]
v2 = v1
v1.append(999)
print(v1,v2)
print(id(v1),id(v2))
"""""" v1 = [1,2,3] v2 = v1 print(id(v1),id(v2)) v1 = 999 print(id(v1),id(v2)) """
-
问题: == 和 is有什么区别?
- == 用于比较值是否相等。
- is 用于比较内存地址是否相等。
走你今儿
- 列表
- reverse
- sort
- 字典
- get (*)
- update
- 集合
- add
- discard
- update
- intersection (*)
- union
- difference
- .....
- 特殊:
- 嵌套:集合/字典的key
- 空:None
- 空集合:...
- id
- type
- 嵌套的应用: (*)
- 赋值
- 修改内部元素:列表/字典/集合