• python学习之生成器推导式递归作业


    1、文件内容如下,标题为:姓名,性别,年纪,薪资
    egon male 18 3000
    alex male 38 30000
    wupeiqi female 28 20000
    yuanhao female 28 10000

    要求:
    从文件中取出每一条记录放入列表中,
    列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式

    with open('db.txt','rt',encoding='utf8') as f:
        users = []
        for line in f:
            name,sex,age,salary = line.strip().split()
            user = {'name':name,'sex':sex,'age':age,'salary':int(salary)}
            users.append(user)
    

    2 根据1得到的列表,取出所有人的薪资之和

    salary_sum = sum(i.get('salary') for i in users)
    print(salary_sum)
    

    3 根据1得到的列表,取出所有的男人的名字

    male_list = [i.get('name') for i in users if i.get('sex')=='male']
    print(male_list)
    

    4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式

    name_list = [info_dic.get('name').title() for info_dic in users]
    print(name_list)
    new_list = []
    
    for info_dic in users:
        info_dic['name'] = info_dic.get('name').title()
        new_list.append(info_dic)
    
    print(new_list)
    

    5 根据1得到的列表,过滤掉名字以a开头的人的信息

    new_list = [info_dic for info_dic in users if not info_dic.get('name').startswith('a')]
    print(new_list)
    

    6 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 5 8...)

    def fibo(n):
        if n == 1:
            return 0
        if n == 2:
            return 1
        return fibo(n-1)+fibo(n-2)
    
    def print_fibo():
        num = input('请输入你想打印的位数:')
        num = int(num)
        for i in range(1,num+1):
            print(fibo(i))
    
    print_fibo()
    

    7 一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

    def get_all_nums(list1):
        for item in list1:
            if isinstance(item,list):
                get_all_nums(item)
            else:
                print(item)
    
    l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]]
    
    get_all_nums(l)
    
  • 相关阅读:
    sharedWorker 实现多页面通信
    cookie跨域那些事儿
    event loop整理
    tsConfig/baseUrl -- 一键告别相对路径import
    vscode配置golang开发环境手把手描述篇
    Vue学习笔记二
    Vue学习笔记
    echarts迁移图动态加载
    病虫害可视化监测平台(一)
    昆虫识别开发进展APP(四)
  • 原文地址:https://www.cnblogs.com/leilijian/p/12567381.html
Copyright © 2020-2023  润新知