Python学习第七天

总结容器:统一管理数据
字符串str:储存字符编码值,不可变,序列
列表list:储存变量,可变,序列
元组tuple:储存变量,不可变,序列
字典dict:储存键值对,可变,散列
键不能重复且不可变
集合set:储存键,可变,散列
不可变:数据在内存中本质都是不可变,采用按需分配的存储机制
可变:具有扩容能力,采用预留空间的存储机制
序列:相邻有序,定位灵活(索引、切片)
散列:分散无序,定位迅速(键)
列表:存储单一维度的数据,例如:治愈人数列表,地区列表
字典:存储多个维度的数据,例如:学生信息,疫情列表

# 1. 创建
dict01 = {"a": "A", "b": "B"}
list01 = [10, 20, 30]
list02 = list(dict01)  # ['a', 'b']
list03 = list(dict01.values())  # ['A', 'B']
list04 = list(dict01.items())  # [('a', 'A'), ('b', 'B')]

# 列表转换为字典的格式要求:列表中元素必须能够一分二
list05 = [('a', 'A'), ('b', 'B')]
dict02 = dict(list05)  # {'a': 'A', 'b': 'B'}

# 2.添加
list01.append(40)
list01.insert(1, 50)

dict01["c"] = "C"

# 3. 定位  容器名称[整数]   容器名称[开始:结束:间隔]
print(list01[0])
list01[-1] = 100

print(list01[:2])
# 遍历右侧,依次存入左侧
list01[-2:] = "悟空"

# import random
# # 包含开始结束
# random.randint(1,10)

# 删除
list01.remove(20)
del list01[0]
print(list01)

# 遍历
# 从头到尾读取
for item in list01:
    print(item)
# 根据索引定位
for i in range(len(list01)):
    print(list01[i])

# 键值对
for k,v in dict01.items():
    print(k)
    print(v)
# 键
for k in dict01:
    print(k)
# 值
for v in dict01.values():
    print(v)

for for 嵌套
1. 在思想上讲,从内到外编写
2. 在执行过程,外层执行一次执行多次
3. 在行列控制,外层决定行内层决定列

"""
    for for 嵌套
        1. 在思想上讲,从内到外编写
        2. 在执行过程,外层执行一次执行多次
        3. 在行列控制,外层决定行内层决定列
"""

"""
print("老王",end = " ")
print("老王",end = " ")
print("老王",end = " ")
print("老王",end = " ")
print("老王",end = " ")
# 换行
print()

print("老王",end = " ")
print("老王",end = " ")
print("老王",end = " ")
print("老王",end = " ")
print("老王",end = " ")
# 换行
print()
"""

# 外层循环控制行
for r in range(2):  # 0       1
    # 内层循环控制列
    for c in range(5):  # 01234   01234
        print("老王", end=" ")
    print()
"""
    自定义排序算法
"""
# 核心思想:
# 确定第一个元素是最大值
# 确定第二个元素是最大值
# ...
# 确定第倒数第二个元素是最大值

# 步骤:
# 1.取出前几个数据(不要最后一个)
# 2.与后面元素进行比较
# 3.发现更xx则交换(取出的   比较的)
list01 = [43, 15, 5, 67, 87, 9]
for r in range(len(list01) - 1):  # 0   1
    for c in range(r + 1, len(list01)):
        if list01[r] > list01[c]:
            list01[r], list01[c] = list01[c], list01[r]
print(list01)
"""
    列表推导式 嵌套
"""
list01 = ["香蕉", "苹果", "哈密瓜"]
list02 = ["雪碧", "可乐", "牛奶", "绿茶"]
# list_result = []
# for r in list01:
#     for c in list02:
#         list_result.append(r + c)
# print(list_result)
list_result = [r + c for r in list01 for c in list02]

练习一

"""
5行7列
*******
*******
*******
*******
*******
"""
for row in range(5):
    for column in range(7):
        print("*",end = "")
    print()

练习二

# 定位单个元素: 列表名称[行索引][列索引]
# 从头到尾读取所有元素:for 元素 in 容器:
# 循环其他元素:for 索引 in range(...):

# 二维列表名
list01 = [
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10],
    [11, 12, 13, 14, 15],
]
print(list01[0][2])  # 3
# 打印出5/9/12
print(list01[0][4])
print(list01[1][3])
print(list01[2][1])
# (每行一个)打循环印6, 7, 8, 9, 10
for item in list01[1]:
    print(item)
# (每行一个)循环打印15,14,13,12,11
for i in range(len(list01[2]) - 1, -1, -1):
    print(list01[2][i])
# (每行一个)循环打印1,6,11
for r in range(len(list01)):
    print(list01[r][0])
# (每行一个)循环打印14,9,4
for r in range(len(list01) - 1, -1, -1):
    print(list01[r][3])
# 以表格状打印每个元素(不要逗号)
for line in list01:
    for item in line:
        print(item, end=" ")
    print()

练习三


# 商品字典
dict_commodity_infos = {
    1001: {"name": "屠龙刀", "price": 10000},
    1002: {"name": "倚天剑", "price": 10000},
    1003: {"name": "金箍棒", "price": 52100},
    1004: {"name": "口罩", "price": 20},
    1005: {"name": "酒精", "price": 30},
}

# 订单列表
list_orders = [
    {"cid": 1001, "count": 1},
    {"cid": 1002, "count": 3},
    {"cid": 1005, "count": 2},
]

# 1.打印所有商品信息,
# 格式:商品编号xx,商品名称xx,商品单价xx.
for cid, info in dict_commodity_infos.items():
    print(f'商品编号{cid},商品名称{info["name"]},商品单价{info["price"]}')

# 2. 打印所有订单中的信息,
# 格式:商品编号xx,购买数量xx.
for order in list_orders:
    print("商品编号%d,购买数量%d." % (order["cid"], order["count"]))

# 3. 打印商品单价小于2万的商品信息
#  格式:商品编号xx,商品名称xx,商品单价xx.
for cid, info in dict_commodity_infos.items():
    if info["price"] < 20000:
        print("商品编号%d,商品名称%s,商品单价%d." % (cid, info["name"], info["price"]))

# 4. 打印所有订单中的商品信息,
#    格式:商品名称xx,商品单价:xx,数量xx.
for order in list_orders:
    cid = order["cid"]
    comodity = dict_commodity_infos[cid]
    # comodity = dict_commodity_infos[order["cid"]]
    print("商品名称%s,商品单价:%d,数量%d." % (comodity["name"], comodity["price"], order["count"]))

# 5. 查找数量最多的订单(使用自定义算法,不使用内置函数)
max_value = list_orders[0]
for i in range(1, len(list_orders)):
    if max_value["count"] < list_orders[i]["count"]:
        max_value = list_orders[i]
print(max_value)

# 6. 根据购买数量对订单列表降序(大->小)排列
# 取数据(不要最后一个)
for r in range(len(list_orders) - 1):
    # 作比较(下一个)
    for c in range(r + 1, len(list_orders)):
        if list_orders[r]["count"] > list_orders[c]["count"]:
            list_orders[r], list_orders[c] = list_orders[c], list_orders[r]

print(list_orders)


练习四

"""
    请排列出所有扑克牌(大小王不算,使用列表存储)
    ["红桃","黑桃","方片","梅花"]
    ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
"""
type_card = ["红桃", "黑桃", "方片", "梅花"]
card_num = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
list_card = [(type, num) for type in type_card for num in card_num]
print(list_card)

练习五

"""
    请排列出3个色子可以组合的所有数字
    每个色子数字1—6,可以使用range(1,7)表示
"""
# number = []
# for dice01 in range(1, 7):
#     for dice02 in range(1, 7):
#         for dice03 in range(1, 7):
#             number.append((dice01, dice02, dice03))
# print(number)
number = [(dice01, dice02, dice03) for dice01 in range(1, 7) for dice02 in range(1, 7) for dice03 in range(1, 7)]
print(number)

练习六

"""

"""
dict_hobbies = {
    "qtx": ["看书", "编码", "旅游"],
    "lzmly": ["刷抖音", "看电影"],
    "于谦": ["抽烟", "喝酒", "烫头"]
}
# 打印"于谦"的第二个爱好
print(dict_hobbies["于谦"][1])
# 打印qtx所有爱好(一行一个)
for hobbie in dict_hobbies["qtx"]:
    print(hobbie)
# 打印lzmly的爱好数量
print(len(dict_hobbies["lzmly"]))
# 打印所有人的所有爱好(一行一个)
for hobbies in dict_hobbies.values():
    for hobbie in hobbies:
        print(hobbie)

练习七

dict_travel_info = {
    "北京": {
        "景区": ["长城", "故宫"],
        "美食": ["烤鸭", "豆汁胶圈", "炸酱面"]
    },
    "四川": {
        "景区": ["九寨沟", "峨眉山"],
        "美食": ["火锅", "兔头"]
    }
}

# 1)打印所有城市(一行一个)
for city in dict_travel_info:
    print(city)
# 2)打印北京所有美食(一行一个)
for food in dict_travel_info["北京"]["美食"]:
    print(food)
# 3)打印四川所有景区(一行一个)
for scenic_area in dict_travel_info["四川"]["景区"]:
    print(scenic_area)
# 4)打印所有城市的所有景区(一行一个)
for city in dict_travel_info:
    for scenic_area in dict_travel_info[city]["景区"]:
        print(scenic_area)
# 5)为北京添加景区:"天坛"
dict_travel_info["北京"]["景区"].append("天坛")
# 6)删除四川美食:兔头
dict_travel_info["四川"]["美食"].remove("兔头")

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值