zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    梳理NLP预训练模型
    听懂NLPer说的是啥
    自然语言处理之HMM模型分词
    入门自然语言处理(NLP)的门
    js轮播图
    js中for循环this的使用
    vue-cli3的vue.config.js配置信息
    vuex的commit、payload、actions、setter、mutations等方法案例
    Vue做数据和视图原理(数据劫持)
    fetch的使用方法(基于promise方法进行增删改查)
  • 原文地址:https://www.cnblogs.com/leilijian/p/12567381.html
Copyright © 2011-2022 走看看