06 内存地址示例 重点

# 列举你了解的字典中的功能(字典独有)。
#  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},]
posted @ 2024-09-28 12:00  jhchena  阅读(9)  评论(0编辑  收藏  举报