day06 数据类型(四)
今日内容
- 集合
- 内存相关
- 深浅拷贝
内容回顾&补充
- 所有数据类型里边 空的 转布尔 都是False
-
内容回顾
-
补充
-
列表
-
reverse,反转
v1 = [1,2,34,534,13] print(v1) v1.reverse() print(v1)
-
sort,排序 reverse = False 是从小到大,reverse = Ture是从大到小
v1 = [1,2,34,534,13] print(v1) v1.sort(reverse=False) # 从小到大排序 (默认) v1.sort(reverse=True) # 从大到小排序 print(v1)
-
-
字典
-
keys,values,items
-
get
info = {"k1":"v1","k2":"v2"} # # # v1 = info["k22222222"] # # v2 = info.get("k34434",666) # v2 = info.get("k34434") # None就是python中的空 # print(v2) # None数据类型,该类开表示空(无任何功能,专门用于提供空值)
-
pop
info = {"k1": "v1", "k2": "v2"} result = info.pop("k2") print(info, result)
-
update
# # 不存在,则添加,丛存在则更新 # info = {"k1": "v1", "k2": "v2"} # info.update({"k3": "v3", "k2": "32444234"}) # print(info)
-
-
判断一个字符串中是否有敏感字符?
-
str
v = "Python全栈21期" if "全栈" in v: print("含铭感字符")
-
list/tuple
v = ["alex","oldboy", "canglaoshi","liqihang"] "liqihang" in v: print("zai")
-
dict
v = {"k1":"v1","k2":"v2","k3":"vv","k4":"v4"} # 默认按键判断,即:判断X是否是字典的键 # 判断 k1 是否在其中? if "k1" in v: pass # 判断 v2 是否在其中? # if "v2" in v.values: # pass # 方式一:循环判断 flag = "不存在" for v in v.values(): if v =="v2": flag = "存在" print(flag) # 方式二: # list(v.values()) # 强制转成列表 ["v1","v2","v3","v4"] if "v2" in list(v.values()) pass # 判断 k2:v2 是否在其中 ? (不能直接判断) value = v.get("k2") if value == "v2": print("存在") else: print("不存在")
-
练习题
# 让用户输入任意字符串,然后判断是否包含指定的敏感字符。 char-list = ["李绮上","唐有光","杂杂汇"] content = input("请输入内容:") success = True for v in char_list: if v in contet: success = False break if success: print(content) else: print("包含敏感字符") # 示例 # 1. 昨天课上最后一题 # 2. 判断 “v2” 是否在字典的value [循环判断] # 3. 敏感字
-
-
内容详细
1. 集合set
- 无序
- 无重复
v = {1,2,3,4,5,6,55,88}
# 疑问 v = {}
"""
None
int
v1 = 123
v1 = int() -> 0
bool
v2 = True
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
- systemmetric_difference
- 注意:1 . 求集函数要生成新的值接收;2.求集函数后边传的值可以是(集合、列表、元组)
-
公共功能
-
len
# v = {'lishaoqi', 1, 2} # print(len(v))
-
for
v = {'lishaoqi', 1, 2} for item in v: print(item
-
索引【无】
-
步长【无】
-
切片【无】
-
删除【无】
-
修改 【无】
-
-
嵌套问题
# 1.列表/字典/集合 -> 不能入在集合中 + 不能作为字典的key (unhashable) # info = {1, 2, 3, 4, True, "国风", None,(1,2,3)} # print(info) # 2. hash -> 哈希是怎么回事? # 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。 # 3. 特殊情况 # info = {1, 2, 3, 4, True, "国风", None,(1,2,3)} # print(info) # info = {1:"alex", # True:"oldboy" # } # print(info)
2. 内存相关
-
示例一:
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 sfdsd d_dsfsaf" --------"f_*" * 3 - 重新开辟内存
-
示例二:
v1 = [11,22,33,44] v2 = [11,22,33]
-
示例三:
v1 = [11,22,33] v2 = v1 # 练习1(内部修改) v1 = [11,22,33] v2 = v1 v1.append(666) print(v2) # 练习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) # 练习3: v = 999 print(values) # [11, 22, [1, 2, 3]] # 练习4: values[2] = 666 print(v)
-
示例五:
v1 = [1,2] v2 = [2,3] v3 = [11,22,v1,v2,v1]
-
查看内存地址: id
""" v1 = [1,2,3] v2 = v1 v1.append(999) print(v1,v2) print(id(v1),id(v2)) """ v1 = [1,2,3] v2 = v1 v1 = 999 print(v1,v2) print(id(v1),id(v2))
-
问题: == 和is有什么区别?
-
== 用于比较值是否相等
-
is 用于比较内存地址是否相等
-
今日总结
- 列表
- reverse
- sort
- 字典
- get(*)
- update
- 集合
- add
- discard
- update
- intersection (*)
- union
- difference
- ……
- 特殊:
- 嵌套:集合/字典 key
- 空:None
- 空集合:set()
- id 查看值的内存地址
- type 查看值的类型
- 嵌套的应用: (*)
- 赋值
- 修改内部元素:列表/字典/集合