栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python-Level1-day07:集合基础操作,去重复与交并补,容器小结,两层循环,容器综合训练,排序算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-Level1-day07:集合基础操作,去重复与交并补,容器小结,两层循环,容器综合训练,排序算法

追求学习系统完整性,将以前的学习笔记与代码重新编辑公开上传一下,仅供自己用。后续笔记整理好陆续公开。


"""
3. 在终端中获取颜色(RGBA),打印描述信息,否则提示颜色不存在
    "R" -> "红色"
    "G" -> "绿色"
    "B" -> "蓝色"
    "A" -> "透明度"
"""
dict01_color = {
    "R": "红色",
    "G": "绿色",
    "B": "蓝色",
    "A": "透明度"
}
key1 = input("please")
if key1 in dict01_color:
    print(dict01_color[key1])
else:
    print("no")
​
​
"""
4. 将列表中的数字累减
    list02 = [5, 1, 4, 6, 7, 4, 6, 8, 5]
    提示:初始为第一个元素
"""
list02 = [5, 1, 4, 6, 7, 4, 6, 8, 5]
sum = list02[0]
for i in range(1,len(list02)):
    sum -= list02[i]
print(sum)
​
​
"""
5. 将列表中整数的十位不是3和7和8的数字存入另外一个列表
   list03 = [135, 63, 227, 675, 470, 733, 3127]
   提示:将数字转换为字符串进行处理,通过索引获取十位
"""
list03 = [135, 63, 227, 675, 470, 733, 3127]
list01 = []
for item in list03:
    if str(item)[-2] in ("3", "7", "8"):
        continue
    list01.append(item)
print(list01)
​
result = [item for item in list03
          if str(item)[-2] not in ("3", "7", "8")]
print(result)
​
​
"""
 6. 在数字列表中查找最大的数字(不许用内置函数)
    算法:
        [170  ,  160  ,  180  ,  165]
    假设第一个就是最大值
    使用假设的和第二个进行比较, 发现更大的就替换假设的
    使用假设的和第三个进行比较, 发现更大的就替换假设的
    使用假设的和第四个进行比较, 发现更大的就替换假设的
    最后,假设的就是最大的.
"""
list01 = [170, 160, 180, 165]
max_value = list01[0]
for i in range(1, len(list01)):
    if max_value < list01[i]:
        max_value = list01[i]
print(max_value)
​
​

"""
    补充:对于列表与元组 优点考虑元组。
    字典没有改键功能,只能删除再添加
​
    集合set :可变散列且唯一的不可变变量组成
​
"""
# 1.创建
set01 = {1, "a", 3.5, True, None}
set02 = set("abc")  # set(可迭代对象)
print(set01)
print(set02)
print(set([1, 2, 5, 3, 4, 5, 7, 2, 1]))  # 集合应用1:集合去重复功能
# set04 = {(1,2,3),"123",[1,2,3]} 报错:不予许可变变量元素
​
# 2添加元素add:根据哈希运算随机位置添加
set01.add("ddd")
set01.add("fff")
print(set01)
​
# 3 定位:无 遍历
for item in set01:
    print(item)
​
# 4 删除 remove discard
set01.remove("ddd")  # 如果键不存在报错
set01.discard("ddd")  # 如果键不存在也不报错
​
​
"""
    集合:
        应用1:去重复
        应用2:交并补
"""
set01 = {1, 2, 3}
set02 = {2, 3, 4}
​
print(set01 & set02)
​
print(set01 | set02)
​
print(set01 - set02)  # 补 1
print(set02 - set01)  # 补  4
print(set02 ^ set01) # 补1 4
​
"""
练习:一家公司有如下岗位:
​
 "经理":"曹操","刘备","孙权"
 "技术" :"曹操","刘备","张飞","关羽"
​
1. 定义数据结构,存储以上信息.
2. 是经理也是技术的都有谁?
3. 是经理不是技术的都有谁?
4. 不是经理是技术的都有谁?
5. 身兼一职的都有谁?
6. 公司总共有多少人数?
"""
#集合运算的结果仍是集合
​
dict01 = {
    "经理": {"曹操", "刘备", "孙权"},
    "技术": {"曹操", "刘备", "张飞", "关羽"}
}
print(dict01["经理"] & dict01["技术"])
print(dict01["经理"] - dict01["技术"])
print(dict01["技术"] - dict01["经理"])
print(dict01["经理"] ^ dict01["技术"])
print(len(dict01["经理"] | dict01["技术"]))
​
"""
小结 容器:
​
     1.种类与特点:
       字符串:存储:字符编码   可变(内存):不可变    序列:序列
       列表: 存储:变量        可变(内存):可变      序列:序列
       元组: 存储:变量(可以放内存可变元素)      可变 (内存):不可变    序列:序列
       字典: 存储:键值对(建唯一不可变(数字,字符串,元组等内存不可变的放建,不是啥都不可变),值可变)  可变(内存) :不可变
       集合: 存储:建(放内存不可变元素)   可变(内存):可变   散列
​
    2.可变:内存预留空间
      不可变:按需分配
​
    3.序列:有顺序,定位灵活,用索引
      散列:没有顺序,节省内存,无索引
"""
"""
列表字典最频繁用
1.创建
2.添加
3,定位
4.遍历
5.删除
​
"""
​
dict01 = {
    "a": 1,
    "b": 20,
    "c": 3
}
del dict01["a"]  # 字典删除
dict01["d"] = 4  # 字典添加
# key;value; value key;字典三种遍历方法
​
# 不支持遍历时候删除字典记录,其他容器也一样
# for key, value in dict01.items():
#     if value == 20:
#         del dict01[key]
​
# 思想:存到其他容器,进行本容器的删除
# 方法:遍历列表删除字典,字典通过list将所有键存储到列表
print(list(dict01))
for key in list(dict01):
    if dict01[key] == 20:
        del dict01[key]
print(dict01)
​
"""
    for for
"""
for i in range(5):
    for j in range(5):
        print("*", end=" ")
    print()
​
for i in range(4):
    for j in range(4):
        if i % 2 == 0:
            print("*", end=" ")
        else:
            print("#", end=" ")
    print()
​
"""
打印图形
*
* *
* * *
* * * * 
"""
for i in range(4):
    for j in range(i + 1):
        print("*", end=" ")
    print()
​
"""
练习:多个人的多个爱好
dict_hobbies = { "于谦": ["抽烟", "喝酒", "烫头"], "郭德纲":
                ["说", "学", "逗", "唱"], }
​
     1. 打印于谦的所有爱好(一行一个) 效果:抽烟喝酒烫头
    2. 计算郭德纲所有爱好数量 效果:4
    3. 打印所有人(一行一个) 效果:于谦郭德纲
    4. 打印所有爱好(一行一个) 抽烟喝酒烫头说学逗唱
"""
ict_hobbies = {
    "于谦": ["抽烟", "喝酒", "烫头"],
    "郭德纲": ["说", "学", "逗", "唱"],
}
​
for item in ict_hobbies["于谦"]:
    print(item)
​
print(len(ict_hobbies["郭德纲"]))
​
for key in ict_hobbies:
    print(key)
​
for value in ict_hobbies.values():
    for value1 in value:
        print(value1)
​
"""
练习 :dict_travel_info = { "北京": { "景区": ["长城", "故宫"],
"美食": ["烤鸭", "豆汁焦圈", "炸酱面"] },
"四川": { "景区": ["九寨沟", "峨眉山"],
"美食": ["火锅", "兔头"] } }
​
    1. 打印北京的第一个景区 效果:长城 打印四川的第二个美食 效果:兔头
     2. 所有城市 (一行一个) 效果:北京四川
     3. 北京所有美食(一行一个) 效果:烤鸭豆汁焦圈 炸酱面
     4. 打印所有城市的所有美食(一行一个) 效果:烤鸭豆汁焦圈 炸酱面 火锅兔头
"""
dict_travel_info = {
    "北京": {
        "景区": ["长城", "故宫"],
        "美食": ["烤鸭", "豆汁焦圈", "炸酱面"]
    },
    "四川": {
        "景区": ["九寨沟", "峨眉山"],
        "美食": ["火锅", "兔头"]}
}
​
print(dict_travel_info["北京"]["景区"][0])
for item in dict_travel_info["北京"]["景区"]:
    print(item)
for item in dict_travel_info:
    print(item)
for item in dict_travel_info["北京"]["美食"]:
    print(item)
​
for value in dict_travel_info.values():
    for item in value["美食"]:
        print(item)
​
"""
    排序算法:熟练背下即可
"""
list01 = [2, 3, 2, 5, 6, 4, 9, 7, 1]
for i in range(len(list01) - 1):
    for j in range(i + 1, len(list01)):
        if list01[i] > list01[j]:
            list01[i], list01[j] = list01[j], list01[i]
print(list01)
​
"""
练习 6:商品字典 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}, ]
​
"""
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},
]
​
# f格式打印需要在引用建的时候用单引号,引号嵌套
# 1.打印所有商品信息, 式:商品编号 xx,商品名称 xx,商品单价 xx.
for key in dict_commodity_infos:
    print("商品编号 :%s  商品名称 :%s  商品单价:%s" % (
        key, dict_commodity_infos[key]["name"],
        dict_commodity_infos[key]["price"]))
​
# 2. 打印所有订单中的信息, 格式:商品编号 xx,购买数量 xx.
for item in list_orders:
    print("商品编号 : %s  购买数量: %s" % (item["cid"], item["count"]))
​
# 3. 打印所有订单中的商品信息, 格式:商品名称 xx,商品单价:xx,数量 xx.
for key in dict_commodity_infos:
    for item in list_orders:
        if item["cid"] == key:
            print(f"商品名称 {dict_commodity_infos[key]['name']},"
                  f"商品单价:{dict_commodity_infos[key]['price']},"
                  f"数量 {item['count']}.")
​
for item in list_orders:
    print(f"商品名称 {dict_commodity_infos[item['cid']]['name']},"
          f"商品单价:{dict_commodity_infos[item['cid']]['price']},"
          f"数量 {item['count']}")
​
# 4. 查找数量最多的订单(使用自定义算法,不使用内置函数)
max_order = list_orders[0]
for item in list_orders:
    if item["count"] > max_order["count"]:
        max_order["count"] = item["count"]
print(max_order)
​
# 5. 根据购买数量对订单列表降序(大->小)排列
for i in range(len(list_orders) - 1):
    for j in range(i + 1, len(list_orders)):
        if list_orders[i]["count"] < list_orders[j]["count"]:
            list_orders[i]["count"], list_orders[j]["count"] = list_orders[j]["count"], list_orders[i][
                "count"]
print(list_orders)
​
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号