深浅拷贝、元组、字典基本操作

. 浅拷贝

list01 = [10, [20, 30]]
# 创建新列表
list02 = list01[:]
list01[0] = 100
list01[1][0] = 200
print(list02)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B0WtWU5u-1602589607862)(C:\Users\hans_\Desktop\Tedu\正课\day06\浅拷贝.jpg)]

. 深拷贝

# 准备深拷贝工具
import copy

list01 = [10, [20, 30]]
list02 = copy.deepcopy(list01)
list01[0] = 100
list01[1][0] = 200
print(list02)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HHMPquM-1602589607866)(C:\Users\hans_\Desktop\Tedu\正课\day06\深拷贝.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0JaaclTc-1602589607869)(C:\Users\hans_\Desktop\Tedu\正课\day06\深浅拷贝练习.jpg)]

. 列表–>字符串

result=“连接符”.join(列表)

list01 = ["八戒", "悟空", "唐僧"]
result = "-".join(list01)
# 八戒-悟空-唐僧
print(result)

# 应用:
# 根据某些逻辑创建字符串

str_result = ""
for number in range(10):  # 0~9
    # 缺点:
    # 每次拼接产生一个新字符串
    # 之前的字符串成为垃圾
    str_result = str_result + str(number)
# 0123456789
print(str_result)

# 解决:将不可变数据,代替为可变数据。
list_result = []
for number in range(10):  # 0~9 
    # 每次都向原有的列表存入数据(没有产生垃圾)
    list_result.append(str(number))
str_result = "".join(list_result)
print(str_result)

. 字符串–>列表

列表=“a-b-c-d”.split(“分隔符”)

list_result = "a-b-c-d".split("-")
# ['a', 'b', 'c', 'd']
print(list_result)

# 应用:使用一个字符串存储多个信息
line = "孙悟空,八戒,唐三藏"
list_datas = line.split(",")
print(list_datas)

. 列表推导式

根据可迭代对象,构建列表

列表=[对变量得操作 for 变量 in 可迭代对象 if 条件]

# 需求1:产生1-100之间奇数
# list_result = []
# for number in range(1, 101):
#     if number % 2:
#         list_result.append(number)

list_result = [number for number in range(1, 101)
               if number % 2]
print(list_result)

# 需求2:产生1-100之间奇数,并计算平方
# list_result = []
# for number in range(1, 101):
#     if number % 2:
#         list_result.append(number ** 2)
list_result = [number ** 2 for number
               in range(1, 101) if number % 2]

. 元组-基本操作

列表:创建、添加、定位、遍历、删除

元组:创建、定位(只读)、遍历

# 1. 创建
# 语法1: 元组名 = (数据1,数据2...)
tuple01 = ("a", "b", "c")
# 语法2: 元组名 = tuple(可迭代对象)
# 可变对象(预留空间) --> 不可变对象(按需分配)
#   计算数据        存储结果
list_data = [10, 20, 30]
tuple02 = tuple(list_data)
print(tuple02)

# 2. 定位
print(tuple01[0])
print(tuple01[-2:])

# 3. 遍历
for item in tuple01:
    print(item)

for i in range(len(tuple01) - 1, -1, -1):
    print(tuple01[i])

# 4. 特殊
# (1)构建元组可以不写小括号
tuple03 = 10, 20, 30
# (2)如果元组中只有一个元素,必须添加逗号
tuple04 = ("a",)
print(type(tuple04))
# (3)拆包
# 语法: 多个变量 = 容器
a, b, c = (100, 200, 300)
# a, b, c = tuple03
# a, b, c = [100, 200, 300]
# a, b, c = "孙悟空"
print(a)
print(b)
print(c)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SpJKgbdv-1602589607873)(C:\Users\hans_\Desktop\Tedu\正课\day06\元组内存图.jpg)]

. 元组应用

容器思想:统一管理数据

month = int(input("请输入月份:"))

# if 1 <= month <= 12:
#     if month == 2:
#         print("29天")
#     # elif month == 4 or month == 6 or month == 9 or month == 11:
#     elif month in (4, 6, 9, 11):
#         print("30天")
#     else:
#         print("31天")
# else:
#     print("月份有误")

# 将每月天数存入容器
year = int(input("请输入年份:"))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    day_of_month02 = 29
else:
    day_of_month02 = 28
days_of_month = (31, day_of_month02, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

# 三月天数:
print(days_of_month[2])
print(days_of_month[month - 1]) 

. 字典–基本操作

# 1. 创建
# 语法1: 字典名 = {键1:值1,键2:值2}
dict_person_wb = {
    "name": "魏彪",
    "sex": "男",
    "money": 10000000
}
dict_person_lqc = {
    "name": "李乾川",
    "sex": "女",
    "money": 20000000
}

# 语法2: 字典名 = dict(可迭代对象)
# 可迭代对象 -格式(每个元素能够一分为二)-> 字典
# [( , ),( , )]
dict_names = dict(["唐僧", ("孙", "悟空"), "八戒"])
print(dict_names)

# 2. 添加
# 语法:字典名[键] = 值
dict_person_lqc["age"] = 26
print(dict_person_lqc)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3ALmaf3-1602589607876)(C:\Users\hans_\Desktop\Tedu\正课\day06\字典内存图.jpg)]

. 常见问题

, ),( , )]
dict_names = dict([“唐僧”, (“孙”, “悟空”), “八戒”])
print(dict_names)

2. 添加

语法:字典名[键] = 值

dict_person_lqc[“age”] = 26
print(dict_person_lqc)




[外链图片转存中...(img-S3ALmaf3-1602589607876)]



.  常见问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzCeftIF-1602589607878)(C:\Users\hans_\Desktop\Tedu\正课\day06\常见疑惑.jpg)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值