zoukankan      html  css  js  c++  java
  • 生成器高级操作、函数递归

    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)
  • 相关阅读:
    #啃underscore源码 一、root对象初始化部分
    LeetCode 7. Reverse Integer (JS)
    LeetCode 1.两数之和(JS)
    【安利】前端基础学习资源
    如何防止XSS攻击?
    浅谈CSRF攻击方式
    node中__dirname、__filename、process.cwd()、process.chdir()表示的路径
    解决Error: ENOENT: no such file or directory, scandir 'xxx ode-sassvendor'
    jquery中attr和prop的区别
    git stash 命令
  • 原文地址:https://www.cnblogs.com/avery-w/p/14199880.html
Copyright © 2011-2022 走看看