Python基础知识(day6)
day6
今日内容
-
集合
-
内存相关
-
深浅拷贝
内容补充
-
列表
-
reverse反转
-
sort排序
# 反转 v1 = [1,2,3,4,5] print(v1) v1.reverse() print(v1) # 排序 v1.sort(reverse=False) # 默认从小到大 print(v1) v1.sort(reverse=True) # 从大到小 print(v1)
-
-
字典
-
keys/values/intems
-
get方法
# 字典补充,get方法 info = {"llk": "hkq"} # print(info["llk"]) v2 = info.get("llk", 666) # 不存在key-value时,返回666,不填的话返回NULL print(v2)
-
update
-
pop
-
内容详细
-
集合set
- 无序
- 无重复
v = {1,2,3,4,5} # 集合set v = {1,2,3,4} print(v) # 空集合/空字典 v1 = {} # 空字典 print(type(v1)) v2 = set() # 空集合 print(type(v2))
-
集合独有功能
# 独有功能 # add添加 v = {1,2} v.add('li') print(v) # discard删除 v = {1,2,3} v.discard(2) print(v) # update 批量更新 v = {1,2,3} v.update({11,22,33}) print(v) # intersection交集 v = {1,2,3} v2 = v.intersection({1,6,7}) print(v2) # union并集 v = {1,2,3} v3 = v.union({3,45,6}) print(v3) # difference差集 v = {1,2,3,4} v4 = v.difference({1,2}) print(v4)
-
集合公共功能
-
len
# len v = {1,2,3,4} print(len(v))
-
for循环
# for循环 v = {1,2,3,4,5} for item in v: print(item)
-
索引【无】
-
步长【无】
-
切片【无】
-
删除【无】
-
修改【无】
-
-
集合嵌套问题
- ps:集合内元素不可变,需要转换为哈希值
- 因为以哈希表方式存储,查询速度非常快
- 字典存为哈希值时,只有key转为哈希值
# 集合嵌套 列表/字典/集合-->不能放在集合中+不能作为字典的key(unhashable) info = {1,2,"li",True,None,(1,2)} print(info)
内存相关
-
示例一
# 值相同,开辟内存不同 v1 = {1,2,3} v2 = {1,2,3} v1 = 666 v2 = 666 v1 = "llk" v2 = "llk" # 按理v1和v2 是不同的内存地址,特殊: 1. 整形: -5 ~ 256 加缓存,不会开辟内存 2. 字符串:"alex" "llk" --会加缓存,不会开辟内存 "f_*" * 3 -会重新开辟内存
-
示例二
# 开辟了两个内存,变量v1前面指向的额内存成为垃圾,等待回收 v1 = {1,2} v1 = {2,3}
-
示例三
# v1开辟内存,v2也指向v1开辟的内存,v1修改值后,v2也被修改,本质是v1和v2指向同一个内存空间 v1 = {1,2,3} v2 = v1 v1.append(666) print (v2) # 含666 # 练习2 v1 = {1,2,3} v2 = v1 v1 = {2,3,4} print (v2) # v2 = {1,2,3}内存指向未改变 #练习3 v1 = 'llk' v2 = v1 v1 = 'kll' print (v2) # v2 = 'llk'
-
示例四
v = [1,2,3] values = [11,22,v] # 练习1 v.append(8) print (values) # [11,22,[1,2,3,8] # 练习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) #[11,22,[1,2,3]]
-
示例五
v1 = [1,2] v2 = [2,3] v2 =[11,22,v1,v2,v1]
-
查看内存地址
v1 = [1,2,3] v2 = v1 print(id(v1),id(v2)) v1 = 999 print(id(v1),id(v2))
-
python 把常用的数字和字符串加入缓存,内存是一致的
-
问题: == 和 is有什么区别
- == 比较值是否相等
- is比较内存是否相等