• 生成器高级操作、函数递归


    1. 文件内容

    标题为:姓名,性别,年纪,薪资
    egon male 18 3000
    alex male 38 30000
    wupeiqi female 28 20000
    yuanhao female 28 10000

    操作

    # 1.从文件中取出每一条记录放入列表中,列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式
    
    list1 = []
    with open(r'db.txt', mode='rt', encoding='utf-8') as f:
        for line in f:
            line_dic = {}
            name, sex, age, salary = line.strip().split(' ')
            line_dic['name'] = name
            line_dic['sex'] = sex
            line_dic['age'] = age
            line_dic['salary'] = salary
            list1.append(line_dic)
        print(list1)
    
    with open(r'db.txt', mode='rt', encoding='utf-8') as f1:
        dic_list = [{'name': list2[0], 'sex': list2[1], 'age': list2[2], 'salary': list2[3]} for list2 in
                    [line.strip().split(' ') for line in f1]]
        print(dic_list)
    # 2.根据1得到的列表,取出所有人的薪资之和
    
    a = sum(int(i['salary']) for i in list1)
    print(a)
    
    salary_sum = [int(dic['salary']) for dic in list1]
    print(sum(salary_sum))
    
    # 3、根据1得到的列表,取出所有的男人的名字
    list3 = [list1_dic['name'] for list1_dic in list1 if list1_dic['sex'] == 'male']
    print(list3)
    
    # 4、根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
    list_capitalize = [{'name': i['name'].capitalize(), 'sex': i['sex'], 'age': i['age'], 'salary': i['salary']} for i in
                       list1]
    print(list_capitalize)
    
    # 5、根据1得到的列表,过滤掉名字以a开头的人的信息
    
    list4 = [i for i in list1 if not i['name'].startswith('a')]
    print(list4)

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

    def func(x,y):
        print(x)
        if x > 100:
            return
        x, y = y, x+y
        func(x,y)
    func(0,1)

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

    l = [1, 2, [3, [4, 5, 6, [7, 8, [9, 10, [11, 12, 13, [14, 15]]]]]]]
    
    
    def func(list1):
        for i in list1:
            if type(i) is list:
                func(i)
            else:
                print(i)
    
    func(l)
  • 相关阅读:
    4. ConcurrentHashMap 锁分段机制
    3. 原子变量-CAS算法
    2. 原子变量
    1. volatale 关键字 -内存可见性
    6.8 全局查询日志
    js实现数字分页
    拆箱和装箱
    string与stringbuilder的区别
    C#之out与ref的共性与区别以及用法
    asp.net操作xml(增删查改)
  • 原文地址:https://www.cnblogs.com/avery-w/p/14199880.html
Copyright © 2020-2023  润新知