zoukankan      html  css  js  c++  java
  • 再看lambda/sorted/filter/map

    • lambda表达式

      这个函数用于一些简单的逻辑,请看下面这个例子:

      def func(x):
          return x ** 2
      

      上面这个函数逻辑很简单,对于我们来说,最重要的就是参数和返回值。正好lambda表达式应运而生:

      lambda 参数值:返回值
      

      因此对于第一个函数,可以改写成这样:

      func = lambda x:x**2
      print(func(10))
      

      求两个数的和:

      # 定义函数
      def sum(a,b):
          return a+b
      # lambda表达式
      sum=lambda a,b:a+b
      
    • sorted函数

      语法:sorted(iterable,key=None,reverse=False)
      

      这里面key是一个函数

      def func(item):
          return len(item)
      lst = ["欧阳东明", "刘伟", "刘能", "赵四", "王大拿", "赵瑞鑫"]
      res = sorted(lst, key=func)
      print(res)
      
      lst = ["欧阳东明", "刘伟", "刘能", "赵四", "王大拿", "赵瑞鑫"]
      res = sorted(lst, key=lambda item: len(item), reverse=True)
      print(res)
      

      key可以先写正常的函数,再改写成lambda表达式。

      练习:按照年龄对学生信息排列

      lst = [
          {"id": 1, "name": "alex", "age": 18},
          {"id": 2, "name": "test", "age": 19},
          {"id": 3, "name": "dgf", "age": 17},
      
      ]
      
      res = sorted(lst, key=lambda item: item['age'])
      print(res)
      

      练习:按照学生姓名长度进行排序

      lst = [
          {"id": 1, "name": "alex", "age": 18},
          {"id": 2, "name": "tesqt", "age": 19},
          {"id": 3, "name": "dgf", "age": 17},
      
      ]
      
      res = sorted(lst, key=lambda item: len(item['name']))
      print(res)
      
    • filter筛选

      语法:filter(function,iterable)
      function:用来筛选的函数,在filter中会自动把iterable中的元素传递给function。然后根据function返回的True或者False来判断是否保留此数据。
      
      # 筛选出大于18的数
      lst = [11, 15, 18, 85, 45]
      res = filter(lambda item: item >= 18, lst)
      for el in res:
          print(el, end=' ')
      
    • map映射

      语法:map(funtion,iterable)
      # 可以对可迭代对象中的每一个元素进行映射,分别执行function。
      

      计算每个元素的平方:

      lst = [11, 15, 18, 85, 45]
      res = map(lambda x: x ** 2, lst)
      print(list(res))
      
  • 相关阅读:
    Spring Boot实现发送邮件
    IDEA thymeleaf ${xxx.xxx}表达式报错,红色波浪线
    解决springboot——集成 mybatis遇到的问题:No MyBatis mapper was found in '[com.example.demo]' package...
    解决Intellij IDEA中Mybatis Mapper自动注入警告
    System.gc()和Runtime.gc()的区别
    Java中定时器相关实现的介绍与对比之:Timer和TimerTask
    markdown语法介绍
    Java VisualVM使用
    Linux系统负载查询
    Kafka高性能吞吐关键技术分析
  • 原文地址:https://www.cnblogs.com/d9e84208/p/11439864.html
Copyright © 2011-2022 走看看