0925作业

今天的作业是对 列表推导式、字典生成式、匿名函数、内置函数的小练习

  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}的形式

# 将信息存入同一目录下的 user.txt

# 方法一  利用列表推导式  
with open('user.txt','r',encoding='utf8') as fr:
    #可以再将i做处理,就可以不一直split
    mylist = [{'name':i.split()[0],'sex':i.split()[1],'age':int(i.split()[2]),'salary':i.split()[3]} for i in fr]
    print(mylist)


#方法二  利用zip 和字典生成器
lit = []
key_list = ['name','age','sex']
with open('user.txt','r',encoding='utf8') as fr:
    for line in fr:
        s = line.split()
        s = zip(key_list,s)   # name
        mydict = {k:v for k,v in s}
        lit.append(mydict)

print(lit)
  1. 根据1得到的列表,取出薪资最高的人的信息

    # 方法一 有名函数
    
    def func(lis):
        return lis['salary']
    
    print(max(mylist, key=func))
    
    #方法二 匿名函数
    
    print(max(mylist, key=lambda x:x['salary']))
  2. 根据1得到的列表,取出最年轻的人的信息

    # 方法一 有名函数
    
    def func(lis):
     return lis['age']
    
    print(min(mylist, key=func))
    
    #方法二 匿名函数
    
    print(min(mylist, key=lambda x:x['age']))
  3. 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式

    info_new=map(lambda item:{'name':item['name'].capitalize(),
                           'sex':item['sex'],
                           'age':item['age'],
                           'salary':item['salary']},mylist)
    
    print(list(info_new))
  4. 根据1得到的列表,过滤掉名字以a开头的人的信息

    res = filter(lambda x:x['name'][0]!='a',mylist)
    print(list(res))
  5. 使用递归打印斐波那契数列(前两个数的和得到第三个数,如:0 1 1 2 3 4 7...)

    def func(a,b,stop):
     if  a > stop:
         return
     print(a,end=' ')
     func(b,b+a)
    
    
    func(0,1)
    
  6. 一个嵌套很多层的列表,如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(seq):
     for item in seq:
         if type(item) is list:
             get(item)
         else:
             print(item)
    get(l)
    

转载于:https://www.cnblogs.com/faye12/p/11586848.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值