python06

第六天

  • 集合
  • 内存相关
  • 深拷贝/浅拷贝

补充

  1. 列表
  • reverse 倒序
  • sort(reverse = True/False) 降序/升序(默认升序)
  1. 字典
  • info.get(‘键’,键不存在返回的值)
  • 不填写返回的值,返回None
  • pop() 删除
  • update({更新的字典内容})(不存在添加,存在替换)
  1. None
  • 代表空的数据类型
  • bool为false
  1. 判断是否包含敏感字符使用in
  • 在字典中使用in判断,默认判断键
  • 判断值可以使用list(info.values())将值转换为列表
  1. 练习
# 让用户输入任意字符串,判断敏感字符
char_list = ['利奇航', '倘有光', '咋咋会']
content = input('请输入内容')
for char in char_list:
    if char in content:
        print('包含敏感字符')
        break
    else:
        print(content)

集合set

  1. 形式
  • 集合={1,5,3,4}
  • 无序,不可重复
  1. 空集合
  • set()\
  • 空整型0即int()
  • 空布尔值False即bool()
  • 空字符串’'即str()
  • 空列表[]即list()
  • 空元组()即tuple()
  • 空字典{}即dict()
  1. 独有功能
  • add添加,重复不添加
  • discard删除
  • update批量添加
  • 集合1.intersection(集合/列表/元组2) 返回交集集合
  • 集合1.union(集合/列表/元组2) 返回并集集合
  • 集合1.difference(集合/列表/元组2) 返回差集集合
  • 集合1.symmetric_difference(集合/列表/元组2) 返回对称差集
  1. 公共功能
  • len
  • for循环
  • 索引/步长/切片/删除/修改【无】
  1. 集合的嵌套
  • 不能嵌套不可哈希的类型(列表/字典/集合)(也不能作为字典的key)
  1. 哈希
  • 可哈希的值在查找时会比循环查找效率高的多
  1. 集合和字典中的key中True = 1,False = 0,重复

内存相关

  1. d(),可查看内存地址
  2. == 和is
    • ==代表值是否相等
  3. is代表内存地址是否一致

作业

  1. 列举你了解的字典中的功能(字典独有)
  • keys()
  • values()
  • items()
  • get()
  • update()
    2.列举你了解的集合中的功能
  • add
  • discard // 从集合中删除指定项目
  • update()
  • intersection
  • union
  • difference
  • symmetric_difference
  1. 列举你了解的可以转换为bool值且为false的值
  • 0
  • ‘’
  • []
  • {}
  • ()
  • set()
  • None
  1. 使用代码实现
info = {'name':'王刚蛋','hobby':'铁锤'}
# 题一、题二
while True:
    content = input('请输入:')
    print(info.get(content, '不存在,请重新输入'))
  • 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出。
  • 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出(如果key不存在,则获取默认“键不存在”,并输出)。 注意:无需考虑循环终止(写死循环即可)
  1. 使用代码验证"name"是否在字典键中
info = {'name':'王刚蛋','hobby':'铁锤','age':'18',...100个键值对}
print('name' in info.keys())
  1. 使用代码验证‘alex’是否在字典中
info = {'name':'王刚蛋','hobby':'铁锤','age':'18',...100个键值对}
print('alex' in info.values())

  1. 有如下
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 的 差集并输出
  1. 循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环)
li = []
while True:
    content = input('请输入:')
    if content == 'N' or content == 'n':	# content.upper == 'N'
        break
    li.append(content)
    print(li)
  1. 循环提示用户输入,并将输入内容添加到集合中(如果输入N或n则停止循环)
s = set()
while True:
    content = input('请输入:')
    if content == 'N' or content == 'n':	# content.upper == 'N'
        break
    s.add(content)
    print(s)
  1. 写代码实现
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}
  1. is 和== 的区别
  • is为对比内存地址
  • ==为对比值是否相等
  1. type使用方式及作用
  • 确定数据类型
  1. id的使用方式及作用
  • 确定内存地址
  1. 查看代码并解释原因
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
  1. 看代码结果并解释原因
v1 = {'k1':'v1','k2':[1,2,3]}
v2 = v1

result1 = v1 == v2 
result2 = v1 is v2 
print(result1)	# True
print(result2)	# True
  1. 查看代码并解释原因
v1 = {'k1':'v1','k2':[1,2,3]}
v2 = v1

v1['k1'] = 'wupeiqi'
print(v2)	# 跟随v1变化
  1. 看代码并解释原因
v1 = '人生苦短,我用Python'
v2 = [1,2,3,4,v1]

v1 = "人生苦短,用毛线Python"

print(v2)	# 不变
  1. 看代码写结果并解释原因
info = [1,2,3]
userinfo = {'account':info, 'num':info, 'money':info}

info.append(9)
print(userinfo)	# 跟随变化

info = "题怎么这么多"
print(userinfo)	# 不变
  1. 看代码结果并解释原因
info = [1,2,3]
userinfo = [info,info,info,info,info]

info[0] = '不仅多,还特么难呢'
print(info,userinfo)	# 跟随变化
  1. 看代码写结果并解释原因
info = [1,2,3]
userinfo = [info,info,info,info,info]

userinfo[2][0] = '闭嘴'
print(info,userinfo)	# 跟随变化,有疑问
  1. 看代码写结果并解释原因
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}
  1. 看代码写结果并解释原因
data_list = []
data = {}
for i in range(10):
    data['user'] = i
    data_list.append(data)
print(data)
  1. 看代码写结果并解释原因
data_list = []
for i in range(10):
    data = {}
    data['user'] = i
    data_list.append(data)
print(data_list)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值