# 列举你了解的字典中的功能(字典独有)。
# keys values items update get
# 列举你了解的集合中的功能(集合独有)。
a = set()
b = set()
a.intersection(b) # 交集
a.union(b) # 并集
a.difference(b) # 差集
# 列举你了解的可以转换为布尔值且为False的值。
# Null 0 "" [] {} set() (,)
# 请用代码实现
# info = {'name': '王刚蛋', 'hobby': '铁锤'}
info = {'name': '王刚蛋', 'hobby': '铁锤'}
# 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出。
"""while True:
choice = input("请输入键:name hobby")
if choice.upper() == 'Q':
break
if choice in info:
print(info[choice])"""
# 循环提示用户输入,根据用户输入的值为键去字典中获取对应的值并输出(如果key不存在,则获取默认“键不存在”,并输出)。
# 注意:无需考虑循环终止(写死循环即可)
"""while True:
choice = input("请输入键:name hobby :")
if choice.upper() == 'Q':
break
res = info.get(choice, '不存在') # 给get 方法,设置默认值
print(res)"""
# 请用代码验证 "name" 是否在字典的键中? if 'name' in info:
# info = {'name': '王刚蛋', 'hobby': '铁锤', 'age': '18',...100个键值对}
# 判断键是否存,可以使用
# 方式一
if 'name' in info:
print('在')
# 方式二
info = {'name': '王刚蛋', 'hobby': '铁锤', 'age': '18'}
res = info.get('name')
if res:
print('在字典中')
else:
print("不在字典中")
# 请用代码验证 "alex" 是否在字典的值中? 判断值是否存在,需使用for 循环
info = {'name': '王刚蛋', 'hobby': '铁锤', 'age': '18'}
flag = False
for item in info.values():
if item == 'alex':
flag = True
if flag:
print("在字典值中")
print("不在字典值中")
# 有如下
v1 = {'武沛齐', '李杰', '太白', '景女神'}
v2 = {'李杰', '景女神'}
# 请得到 v1 和 v2 的交集并输出
res = v1.intersection(v2)
print(res)
# 请得到 v1 和 v2 的并集并输出
res = v1.union(v2)
print(res)
# 请得到 v1 和 v2 的 差集并输出
res = v1.difference(v2)
print(res)
# 请得到 v2 和 v1 的 差集并输出
res = v2.difference(v1)
print(res)
# 循环提示用户输入,并将输入内容追加到列表中(如果输入N或n则停止循环)
"""
li = []
while True:
input_str =input("请输入,N/n退出")
if input_str.upper() == 'N':
break
li.append(input_str)
print(li)
"""
# 循环提示用户输入,并将输入内容添加到集合中(如果输入N或n则停止循环)
li = set()
"""while True:
input_str =input("请输入,N/n退出")
if input_str.upper() == 'N':
break
li.add(input_str)
print(li)"""
# 写代码实现
v1 = {'alex', '武sir', '肖大'}
v2 = []
# 循环提示用户输入,如果输入值在v1中存在,则追加到v2中,如果v1中不存在,则添加到v1中。(如果输入N或n则停止循环)
"""
while True:
input_str = input("请输入,N/n退出")
if input_str.upper() == 'N':
break
if input_str in v1:
v2.append(input_str)
v1.add(input_str)
print(v1, v2)
"""
# 判断以下值那个能做字典的key ?那个能做集合的元素?
#
# 1 # dict
# -1 # dict
# "" # dict
# None # dict
# [1, 2] # 不能 可变类型
# (1, ) # dict
# {11, 22, 33, 4} # 不能 可变类型
# {'name': 'wupeiq', 'age': 18} # 不能 可变类型
# is 和 == 的区别?
# - == 用于比较值是否相等。
# - is 用于比较内存地址是否相等。
# type使用方式及作用?
# 判断是不是某种数据类型,进行判断,进行不同的操作
v = 'aaasdfasb'
# 判断 v是不是字符串?
if type(v) == str:
print('v是字符串')
elif type(v) == dict:
print('是字典')
elif type(v) == list:
print('是列表')
elif type(v) == tuple:
print('是元组')
elif type(v) == set:
print('是集合')
else:
print('其他数据类型')
# id的使用方式及作用?
# 查找内存地址是否一致,
print(id(v)) # 1724660815088
# ################################ 回顾 ################################
# 示例1
v1 = [1, 2, 3] # 开僻内存空间
v2 = [1, 2, 3] # 开僻内存空间
# 示例二
v1 = [1, 2, 3] # v2、v3 都指向 变量 v1 内存地址
v2 = v1
v3 = v1
v1.append(999) # 此时v2/v3 都会发生变化,因 v1 把内存地址中的值进行修改了
# 示例三
v1 = [1, 2, 3] # v2、v3 都指向 变量 v1 内存地址
v2 = v1
v3 = v1
v1 = [1, ] # v1 重新赋值 指向另一个列表,此时v2/v3 还是指向v1原来的内存地址,值为: [1,2,3]
# 示例四
v1 = [1, 2, 3] # v2、v3 都指向 变量 v1 内存地址
v2 = v1
v3 = v1
v2 = [1, ] # v2 重新赋值指向另一个列表,此时v1/v3 还是指向v1原来的内存地址,值为: [1,2,3]
# 示例五 一行一行代码进行分析
v1 = [1, 2, 3] # v2、v3 都指向 变量 v1 内存地址
v2 = v1 # v2 = v1 v2 指向v1 内存地址
v3 = v2 # v3 = v2 ,因 v2 指向 v1 内存地址,所以 v3 也指向 v1 内存地址
v2 = [1, ] # v2 重新赋值指向另一个列表,此时v1 v3 还是指向v1原来的内存地址,值为: [1,2,3]
# 示例6 不考虑小数据池场景
v1 = 'alex' # v1/v2 指向 alex 内存地址 字符串:不可变类型,字符串内部元素不可以修改
v2 = v1
v1.upper() # 如果 v1.upper(),相当于 将 alex 进行复制一份,然后进行转换成大写 转换后没有进行接收,只是进行转换下,
print(v1, v2) # 都为: alex
# 示例 7
v1 = [11, 2, 3]
v2 = v1
v1.append(999)
print(v1, v2) # [11,2,3,999]
# 示例 8
v1 = "alex"
value = v1[0:2] # 将 v1[0:2] 进行切片后,也是重新进行开僻内存空间
# 示例8
v1 = {1, 2, 3} # 集合
v2 = v1
v1.add(666)
print(v1, v2) # 1,23,666
# 示例 9
v1 = {1, 2, 3}
v2 = v1
n = v1.intersection([1, 88, 9]) # intersection 取交集,不会修改本来的值
print(v1, v2) # 1,23,666
# 示例10
v1 = [1, 2, 3, ]
v2 = v1
v1[0] = [11, 22, 33, 4] # 将v1 索引 0 的值由: 1 变成列表 [11,22,33,4]
v1 = [1, 2]
v2 = [1, 2, v1]
v2[2] = 55 # 不会修改v1 中的值,v2 索引位置 为:2的 内存地址值由:v1 指向 55
print(v1, v2) # v1 = [1,2,3] v2 =[1,2,55]
v1 = [1, 2]
v2 = [1, 2, v1]
v2[2][1] = 55 # 会将v1中 索引为 1 的值进行修改
print(v1, v2) # v1 = [1,2,55] v2 =[1,2,[1,2,55]]
# 看代码写结果并解释原因
v1 = {'k1': 'v1', 'k2': [1, 2, 3]}
v2 = {'k1': 'v1', 'k2': [1, 2, 3]}
result1 = v1 == v2 # True
result2 = v1 is v2 # False
print(result1)
print(result2)
# 看代码写结果并解释原因
v1 = {'k1': 'v1', 'k2': [1, 2, 3]}
v2 = v1 # 赋值是想等
result1 = v1 == v2 # True
result2 = v1 is v2 # True
print(result1)
print(result2)
# 看代码写结果并解释原因
v1 = {'k1': 'v1', 'k2': [1, 2, 3]}
v2 = v1
v1['k1'] = 'wupeiqi'
print(v2) # {'k1': 'wupeiqi', 'k2': [1, 2, 3]}
# 看代码写结果并解释原因
v1 = '人生苦短,我用Python' # 不可变
v2 = [1, 2, 3, 4, v1] # 可变
v1 = "人生苦短,用毛线Python" # 重新赋值
print(v2) # [1, 2, 3, 4, '人生苦短,我用Python']
# 看代码写结果并解释原因
info = [1, 2, 3] # 可变
userinfo = {'account': info, 'num': info, 'money': info}
# {'account':[1, 2, 3],}
info.append(9) # [1, 2, 3,9]
print(userinfo) # {'account':[1, 2, 3,9],}
#
info = "题怎么这么多" # 重新赋值,不可变
print(userinfo) # {'account':[1, 2, 3,9],}
# 看代码写结果并解释原因
info = [1, 2, 3] # 可变
userinfo = [info, info, info, info, info]
# [[1, 2, 3],]
info[0] = '不仅多,还特么难呢' # ['不仅多,还特么难呢', 2, 3]
print(info, userinfo) # [['不仅多,还特么难呢', 2, 3],]
# 看代码写结果并解释原因
info = [1, 2, 3] # 可变
userinfo = [info, info, info, info, info]
# [[1, 2, 3],]
userinfo[2][0] = '闭嘴'
print(info, userinfo) # ['闭嘴', 2, 3] [['闭嘴', 2, 3],]
# 看代码写结果并解释原因
info = [1, 2, 3]
user_list = [] # [[1, 2, 3],]
for item in range(10):
user_list.append(info)
print(user_list)
info[1] = "是谁说Python好学的?" # [1,"是谁说Python好学的?", 3] 可变数据类型,修改后,整体会修改
print(user_list) # [[1,"是谁说Python好学的?", 3],]
# 看代码写结果并解释原因
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) # {'user':9}
# 看代码写结果并解释原因
data_list = []
for i in range(10):
data = {} # {'user':9}
data['user'] = i
data_list.append(data)
print(data, data_list) # [{'user':0},]