考前Python容器+函数 一题攻略(浅学易懂)

例子:

员工编号 部门编号  姓名    工资
    1001    9002    师父    60000
    1002    9001    孙悟空  50000
    1003    9002    猪八戒  20000
    1004    9001    沙僧    30000
    1005    9001    小白龙  15000

题目:

 --创建列表嵌套字典表达以上数据
    --定义函数,打印所有员工信息,
      格式:xx的员工编号是xx,部门编号是xx,月薪xx元.
    --定义函数,获取部门9002的所有员工姓名
    --定义函数,获取薪资最低的员工
    --定义函数,根据薪资对员工列表升序排序
    --定义函数,删除姓名是3个字的员工

列表集合中内容为字典 以键值对的形式保存每个人的具体信息
    # ---------------全局变量(数据)-------------
    list_employees = [
        {
            "eid": 1001,
            "did": 9002,
            "name": "师父",
            "money": 60000
        },
        {"eid": 1002, "did": 9001, "name": "孙悟空", "money": 50000},
        {"eid": 1003, "did": 9002, "name": "猪八戒", "money": 20000},
        {"eid": 1004, "did": 9001, "name": "沙僧", "money": 30000},
        {"eid": 1005, "did": 9001, "name": "小白龙", "money": 15000},
    ]
    

输出格式     print(f" 用到变量{x}    ")
    # ---------------定义函数(算法)-------------
    
    # 1. 打印所有员工信息,
    # 格式:xx的员工编号是xx,部门编号是xx,月薪xx元。
    def print_employees():
        for emp in list_employees:
            print(f"{emp['name']}的员工编号是{emp['eid']},部门编号是{emp['did']},月薪{emp['money']}元.")
    




返回列表类型,所有姓名的集合   
    # 2. 查找部门时9002的员工名称
    def get_name_by_did_9002():
        list_name = [];
        for emp in list_employees:
            if emp["did"] == 9002:
                list_name.append(emp["name"])
        return list_name



    
返回员工所有信息 即字典类型
掌握range()
(1) 作用:
​ 用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。
(2) 语法:
​ range(开始点,结束点,间隔)
(3) 说明:
函数返回的可迭代对象可以用for取出其中的元素
返回的数字不包含结束点
开始点默认为0
间隔默认值为1

    # 3. 定义函数,获取薪资最低的员工
    def get_min_by_money():
        min_value = list_employees[0];
        for i in range(1, len(list_employees)):
            if min_value["money"] > list_employees[i]["money"]:
                min_value = list_employees[i]
        return min_value
    
    



冒泡排序 eg 10个数 比较9趟 第一趟比9次 第二趟比8次 注意变量
    # 4. 定义函数,根据购买数量对订单列表降序(大->小)排列
    def descending_order_by_money():
        for r in range(len(list_employees) - 1):
            for c in range(r + 1, len(list_employees)):
                if list_employees[r]["money"] < list_employees[c]["money"]:
                    list_employees[r], list_employees[c] = list_employees[c], list_employees[r]
    
    




删除注意!!!倒着删 由于有序列表下标自动补齐
    # --定义函数,删除姓名是3个字的所有员工
    def delete_all_by_name_eq_3():
        for i in range(len(list_employees) - 1, -1, -1):
            if len(list_employees[i]["name"]) == 3:
                del list_employees[i]
    
    


注意input()得到的是字符串 要么拿字符串比较 要么转化为数字再比
    # ---------------程序入口-------------
    while True:
        number = input("请输入选项:")
        if number == "1":
            print_employees()
        elif number == "2":
            list_name = get_name_by_did_9002()
            print(list_name)
        elif number == "3":
            value = get_min_by_money()
            print(value)
        elif number == "4":
            descending_order_by_money()
            print(list_employees)
        elif number == "5":
            delete_all_by_name_eq_3()
            print(list_employees)

简述字符串,列表,元祖,字典各容器的特点

字符串:属于序列类型、有下标(且唯一)可以进行切片操作,不能改变值。

列表:有序序列、有下标、可以存贮任何类型的数据,内容可以进行增删改查。

元组:有序序列、有下标、可以存储任何类型数据,可以进行切片、内容不可以改变。元组和列表可以转换,但转换后的为另存的新对象,对转换前的对象没影响。

字典:不是序列类型,无序、没有下标,内容可以改变,是一种键值对映射。键名唯一,键为哈希类型,不能改变,因此列表和字典不能作为键。值可以是任意类型。

列表[]:存储变量,可变,序列

元组():存储变量,不可变,序列

字典{}:存储键值对,可变,散列,充当键的数据类型必须是不可变

可变:预留空间+自动扩容

            例如:列表、字典...

            优点:使用灵活

            缺点:占用内存较多

        不可变:按需分配

             例如:元组、字符串、数值、布尔...

            优点:占用内存较少

            缺点:使用不灵活

序列与散列

        序列:有顺序,支持索引切片

        散列:没顺序,定位元素最快(哈希算法)

索引、切片

1.索引index(容器通用操作)

(1) 作用:定位单个容器元素。

(2) 语法:容器[整数]

(3) 说明:

正向索引从0开始,第二个索引为1,最后一个为len(s)-1。

反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)。

(4)函数:

​ len(obj) –> 返回容器的长度

2.切片slice(容器通用操作)

(1) 作用:

定位多个容器元素。

(2) 语法:

容器[开始索引:结束索引:步长]

(3) 说明:

结束索引不包含该位置元素

步长是切片每次获取完当前元素后移动的偏移量

开始、结束和步长都可以省略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值