匿名函数与内置函数连用

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

all_user_list=[]
with open('user_info.txt','r',encoding='utf-8') as f:
    for per_info in f:
        per_user_dic = {}
        name,sex,age,salary=per_info.strip().split()
        per_user_dic['name']=name
        per_user_dic['sex']=sex
        per_user_dic['age']=int(age)
        per_user_dic['salary']=int(salary)
        all_user_list.append(per_user_dic)
    print(all_user_list)
    # 1. 根据1得到的列表,取出薪资最高的人的信息
    print(max(all_user_list,key=lambda per_user_dic:per_user_dic['salary']))
    # 2.根据1得到的列表,取出最年轻的人的信息
    print(min(all_user_list,key=lambda per_user_dic:per_user_dic['age']))
    # 3.根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
    print(list(map(lambda per_user_dic:{per_user_dic['name'].capitalize():name,per_user_dic['sex']:sex,
                        per_user_dic['age']:int(age),per_user_dic['salary']:int(salary)},all_user_list)))
    # 4. 根据1得到的列表,过滤掉名字以a开头的人的信息
    print(list(filter(lambda per_user_dic:per_user_dic['name'].startswith('a'),all_user_list)))
View Code
#2. 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 4 7...)

item = int(input('输入项数>>>:'))
start1=int(input('起始第一个数>>>:'))
start2=int(input('起始第二个数>>>:'))

def fib(n, x, y):
    if n==0:
        return
    else:
        x, y = y, x + y
        print(y)
    fib(n-1, x,y)
fib(item, start1, start2)
# 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 get_element(x):
   for i in x:
       if type(i)==list:
           get_element(i)
       else:
            print(i)
get_element(l)

 

posted on 2019-09-25 20:39  jueyuanfengsheng  阅读(174)  评论(0编辑  收藏  举报