第六天
- 集合
- 内存相关
- 深拷贝/浅拷贝
补充
- 列表
- reverse 倒序
- sort(reverse = True/False) 降序/升序(默认升序)
- 字典
- info.get(‘键’,键不存在返回的值)
- 不填写返回的值,返回None
- pop() 删除
- update({更新的字典内容})(不存在添加,存在替换)
- None
- 代表空的数据类型
- bool为false
- 判断是否包含敏感字符使用in
- 在字典中使用in判断,默认判断键
- 判断值可以使用list(info.values())将值转换为列表
- 练习
# 让用户输入任意字符串,判断敏感字符
char_list = ['利奇航', '倘有光', '咋咋会']
content = input('请输入内容')
for char in char_list:
if char in content:
print('包含敏感字符')
break
else:
print(content)
集合set
- 形式
- 集合={1,5,3,4}
- 无序,不可重复
- 空集合
- set()\
- 空整型0即int()
- 空布尔值False即bool()
- 空字符串’'即str()
- 空列表[]即list()
- 空元组()即tuple()
- 空字典{}即dict()
- 独有功能
- add添加,重复不添加
- discard删除
- update批量添加
- 集合1.intersection(集合/列表/元组2) 返回交集集合
- 集合1.union(集合/列表/元组2) 返回并集集合
- 集合1.difference(集合/列表/元组2) 返回差集集合
- 集合1.symmetric_difference(集合/列表/元组2) 返回对称差集
- 公共功能
- len
- for循环
- 索引/步长/切片/删除/修改【无】
- 集合的嵌套
- 不能嵌套不可哈希的类型(列表/字典/集合)(也不能作为字典的key)
- 哈希
- 可哈希的值在查找时会比循环查找效率高的多
- 集合和字典中的key中True = 1,False = 0,重复
内存相关
- d(),可查看内存地址
- == 和is
-
- ==代表值是否相等
- is代表内存地址是否一致
作业
- 列举你了解的字典中的功能(字典独有)
- keys()
- values()
- items()
- get()
- update()
2.列举你了解的集合中的功能 - add
- discard // 从集合中删除指定项目
- update()
- intersection
- union
- difference
- symmetric_difference
- 列举你了解的可以转换为bool值且为false的值
- 0
- ‘’
- []
- {}
- ()
- set()
- None
- 使用代码实现
info = {'name':'王刚蛋','hobby':'铁锤'}
# 题一、题二
while True:
content = input('请输入:')
print(info.get(content, '不存在,请重新输入'))
- 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出。
- 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出(如果key不存在,则获取默认“键不存在”,并输出)。 注意:无需考虑循环终止(写死循环即可)
- 使用代码验证"name"是否在字典键中
info = {'name':'王刚蛋','hobby':'铁锤','age':'18',...100个键值对}
print('name' in info.keys())
- 使用代码验证‘alex’是否在字典中
info = {'name':'王刚蛋','hobby':'铁锤','age':'18',...100个键值对}
print('alex' in info.values())
- 有如下
v1 = {'武沛齐', '李杰', '太白', '景女神'}
v2 = {'李杰', '景女神'}
print(v1.intersection(v2))
print(v1.union(v2))
print(v1.difference(v2))
print(v1.symmetric_difference(v2))
- 请得到 v1 和 v2 的交集并输出
- 请得到 v1 和 v2 的并集并输出
- 请得到 v1 和 v2 的 差集并输出
- 请得到 v2 和 v1 的 差集并输出
- 循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环)
li = []
while True:
content = input('请输入:')
if content == 'N' or content == 'n': # content.upper == 'N'
break
li.append(content)
print(li)
- 循环提示用户输入,并将输入内容添加到集合中(如果输入N或n则停止循环)
s = set()
while True:
content = input('请输入:')
if content == 'N' or content == 'n': # content.upper == 'N'
break
s.add(content)
print(s)
- 写代码实现
v1 = {'alex','武sir','肖大'}
v2 = []
# 循环提示用户输入,如果输入值在v1中存在,则追加到v2中,如果v1中不存在,则添加到v1中。(如果输入N或n则停止循环)
while True:
content = input('请输入:')
if content.upper == 'N':
break
if content in v1:
v2.append(content)
else:
v1.add(content)
print(v1, v2)
11.判断以下值那个能做字典的key ?那个能做集合的元素?
判断以下值那个能做字典的key ?那个能做集合的元素?
- 1 对
- -1 对
- “” 对
- None 对
- [1,2]
- (1,) 对
- {11,22,33,4}
- {‘name’:‘wupeiq’,‘age’:18}
- is 和== 的区别
- is为对比内存地址
- ==为对比值是否相等
- type使用方式及作用
- 确定数据类型
- id的使用方式及作用
- 确定内存地址
- 查看代码并解释原因
v1 = {'k1':'v1','k2':[1,2,3]}
v2 = {'k1':'v1','k2':[1,2,3]}
result1 = v1 == v2
result2 = v1 is v2
print(result1) # True
print(result2) # False
- 看代码结果并解释原因
v1 = {'k1':'v1','k2':[1,2,3]}
v2 = v1
result1 = v1 == v2
result2 = v1 is v2
print(result1) # True
print(result2) # True
- 查看代码并解释原因
v1 = {'k1':'v1','k2':[1,2,3]}
v2 = v1
v1['k1'] = 'wupeiqi'
print(v2) # 跟随v1变化
- 看代码并解释原因
v1 = '人生苦短,我用Python'
v2 = [1,2,3,4,v1]
v1 = "人生苦短,用毛线Python"
print(v2) # 不变
- 看代码写结果并解释原因
info = [1,2,3]
userinfo = {'account':info, 'num':info, 'money':info}
info.append(9)
print(userinfo) # 跟随变化
info = "题怎么这么多"
print(userinfo) # 不变
- 看代码结果并解释原因
info = [1,2,3]
userinfo = [info,info,info,info,info]
info[0] = '不仅多,还特么难呢'
print(info,userinfo) # 跟随变化
- 看代码写结果并解释原因
info = [1,2,3]
userinfo = [info,info,info,info,info]
userinfo[2][0] = '闭嘴'
print(info,userinfo) # 跟随变化,有疑问
- 看代码写结果并解释原因
info = [1,2,3]
user_list = []
for item in range(10):
user_list.append(info)
info[1] = "是谁说Python好学的?"
print(user_list) # 跟随变化
23.看代码写结果并解释原因
data = {}
for i in range(10):
data['user'] = i
print(data) # {'user': 9}
- 看代码写结果并解释原因
data_list = []
data = {}
for i in range(10):
data['user'] = i
data_list.append(data)
print(data)
- 看代码写结果并解释原因
data_list = []
for i in range(10):
data = {}
data['user'] = i
data_list.append(data)
print(data_list)