python之函数摘抄题

    1. 有列表 a = ["7net.cn","www.7net","www.septnet7","7net","www.6net",7nte.org]现需要从中将包含字符7net的元素给删掉,请以最少代码量实现。(3分)

      a = ["7net.cn","www.7net","www.septnet7","7net","www.6net","7nte.org"]
      print(list(filter(lambda x:"7net"not in x,a)))
  1. l = ['班级24','班级15','班级3','班级5','班级25'],按照数字的顺序从大到小排序,不改变原列表,请以最少代码量实现。(3分)

       l = ['班级24','班级15','班级3','班级5','班级25']
    print(list(sorted(l,key=lambda x:int(x[2:]),reverse=True)))
    1. 现在有两元祖tu1 = (('a'),('b')),tu2 = (('cc'),('dd')),请使用python中的匿名函数和内置函数生成列表[{'a':'cc'},{'b':'dd'}] (3分)

      tu1 = (('a'),('b'))
      tu2 = (('cc'),('dd'))
      print(list(map(lambda x:{x[0]:x[1]},zip(tu1,tu2))))
    2. 写一个生成器,里面的元素是20以内所有奇数的平方减2,并且调用生成器(2分)

      g = (i**2-2 for i in range(1,20,2))
      for i in g:
       print(i)
    3. lst = [{“a”:6,”b”:22},{“a”:12,”b”:28},{“a”:18,”b”:21}]请写出以键b的值对lst进行从小到大排序的表达式(3分)

      lst = [{"a":6,"b":22},{"a":12,"b":28},{"a":18,"b":21}]
      print(list(sorted(lst,key=lambda x:x["b"])))
  2. 用filter函数过滤出单价大于100的股票。(3分)

    portfolio = [

     {'name': 'IBM', 'shares': 100, 'price': 91.1},

    ​ {'name': 'AAPL', 'shares': 50, 'price': 543.22},

    ​ {'name': 'FB', 'shares': 200, 'price': 21.09},

    ​ {'name': 'HPQ', 'shares': 35, 'price': 31.75},

    ​ {'name': 'YHOO', 'shares': 45, 'price': 116.35},

    ​ {'name': 'ACME', 'shares': 75, 'price': 115.65}]

    portfolio = [
         {'name': 'IBM', 'shares': 100, 'price': 91.1},
      {'name': 'AAPL', 'shares': 50, 'price': 543.22},
         {'name': 'FB', 'shares': 200, 'price': 21.09},
         {'name': 'HPQ', 'shares': 35, 'price': 31.75},
         {'name': 'YHOO', 'shares': 45, 'price': 116.35},
         {'name': 'ACME', 'shares': 75, 'price': 115.65}]
    
       print(list(filter(lambda x:x["price"] > 100,portfolio)))
    1. 求出l1列表中成绩最高的学生的姓名。(3分)

      l1 = [('王大锤',59),('李业',67),('宝哥哥',99),('铁蛋',47)]

      l1 = [('王大锤',59),('李业',67),('宝哥哥',99),('铁蛋',47)]
      print(max(l1,key=lambda x:x[-1]))
    2. 有一个lst = ["This","is","a","Boy","!"]所有元素都是字符串,使用sorted对它进行不分到小写无关的排序(3分)

      lst = ["This","is","a","Boy","!"]
      print(sorted(map(lambda x:x.lower(),lst)))
    3. 将lst = [[1,2,3],[4,5,6],[7,8,9]] 转换成 [1,2,3,4,5,6,7,8,9] (5分)

      lst = [[1,2,3],[4,5,6],[7,8,9]]
      new_lst = []
      for i in lst:
          new_lst += i
      print(new_lst)
      # 第二种方法
      print([i for j in lst for i in j ])
    4. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

    例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)] (5分)

       lst = ["红心","草心","黑桃","梅花"]
       new_lst = [i for i in range(2,11)] + ["J","Q","K","A"]
       print([(j,i) for j in new_lst for i in lst])
    1. 将列表内的元素,根据位数合并成字典(7分)

      lst = [1,2,3,4,12,23,34,45,111,222,333,1234,2345,34567,456789]
      # 输出如下字典:
      {
        1:[1,2,3,4],
        2:[12,23,34,45],
        3:[111,222,333],
        4:[1234,2345],
        5:[34567],
        6:[456789]
      }
      lst = [1,2,3,4,12,23,34,45,111,222,333,1234,2345,34567,456789]
      dic = {}
      for i in lst:
          if len(str(i)) in dic:
              dic[len(str(i))].append(i)
          else:
              dic[len(str(i))] = [i]
      print(dic)
    2. 把aaaabbbcc这种形状式中特定的字符串压缩成a4b3c2这种字符串的格式(10分)

      s = 'aaaabbbcc'
      from collections import Counter
      print("".join(map(lambda x:x+str(dict(Counter(s))[x]),dict(Counter(s)))))
    3. 有两个字符串列表a和b,每个字符串是由逗号分隔的一些字符:(10分)

      a = [
        "a:1",
        "b:2:3",
        "c:5:7"
      ]
      b = [
        "a:2:3",
        "b:4:5",
        "d:6:8"
      ]
      
      # 生成如下列表
      c = [
        "a:1:2:3",
        "b:2:3:4:5",
        "c:5:7",
        "d:6:8"
      ]

      答案:

      a = [
        "a:1",
        "b:2:3",
        "c:5:7"
      ]
      
      b = [
        "a:2:3",
        "b:4:5",
        "d:6:8"
      ]
      
      dic = {i[0]:i for i in a}
      
      for j in b:
          if j[0] in dic:
             dic[j[0]] += j[1:]
          else:
              dic.setdefault(j[0],j)
      print(list(dic.values()))

转载于:https://www.cnblogs.com/saoqiang/p/11392225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值