码迷,mamicode.com
首页 > 其他好文 > 详细

内置函数

时间:2020-01-13 11:15:32      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:als   red   注意   key   css   映射   迭代   方式   依据   

内置函数

一、匿名函数lambda

  • 匿名函数的一部分是函数的参数,第二部分是函数中return的内容,但lambda中没有return关键字

  • 基本格式为:变量 = lambda 参数1,参数2, ...... : 返回结果

    # lambda函数
    a = lambda x : x**2
    # x为参数,x**2为函数的返回内容
    print(a(3))
    print(a)
    # 结果是:
    9
    <function <lambda> at 0x104d32830>
    # 所有的匿名函数都被统称为lambda
    b = lambda x, y, z : x + y + z
    print(b(1,2,3))
    print(b)
    # print(b.__name__)
    # 查看函数的名字格式:函数名.__name__
  • 一行完成一个函数,这种函数是临时的,也是非常简单的函数,复杂的函数lambda无法处理

排序函数sorted

  • sorted()函数有三个参数:可迭代对象、key=条件函数名、reverse=False, sorted()函数会对key中传过来的值进行排序,从而确定迭代对象的排列顺序,key和reverse是可选参数,是否使用根据情况来定

    list = [1,2,45,2,43,2,5,3,1]
    list = sorted(list, reverse=True)
    print(list)
    # sort()、reverse()方法都是list内置的方法,对于其他的数据类型无法进行排序
    # sorted()python的内置函数可以对其他的数据类型进行排序
    
    list = ['Python', 'Java', 'C', 'C#', 'HTML', 'CSS']
    def func(list):
      return len(list)
    list = sorted(list, key=func, reverse=True)
    # key对应的是一个函数,也就是整个函数的排序规则、排序的依据
    print(list)
    
    list1 = ['Python---', 'Java-', 'C--', 'C#-----', 'HTML--', 'CSS-']
    '''方法一'''
    def func(s):
      return s.count('-')
      # 按照字符串中的'-'个数来排序,这里返回的必须是数字,只有返回数字函数才能
      # 依照数字来进行排序
    
    list1 = sorted(list1, key=func)
    # 函数的第一个参数必须是一个可迭代的对象,也就是说函数在排序的时候进行了循环遍历
    # 每一个都进行比较,那么,我们在写排序条件函数的时候参数也就是遍历对象的每一个元素
    # sorted()内置函数把迭代对象的每一个元素作为参数传递给了条件函数,条件函数返回了
    # 结果,还有一点必须注意:key后边跟的是函数名,不是函数()
    print(list1)
  • sorted()函数经常配合lambda函数来使用,lambda函数可以代替判断条件函数,因为该函数很简单

    '''方法二'''
    list1 = sorted(list1, key=lambda s: s.count('-'), reverse=True)
    print(list1)
    # 结果是:
    ['C#-----', 'Python---', 'C--', 'HTML--', 'Java-', 'CSS-']
    # 匿名函数直接写在key后,如果不用匿名函数,那么key后必须是函数的名字

    过滤函数filter

  • 过滤函数格式:filter(过滤的条件函数, 可迭代的对象),过滤的结果是迭代器

    # filter过滤
    lst = [
      {'id': 1, 'name': 'alex', 'age': 19},
      {'id': 2, 'name': 'Jack', 'age': 20},
      {'id': 3, 'name': 'Mack', 'age': 23},
      {'id': 4, 'name': 'Mary', 'age': 13},
      {'id': 5, 'name': 'Gudo', 'age': 67},
    ]
    lst = filter(lambda dict : dict['age']>= 23, lst)
    # 过滤条件函数和匿名函数搭配使用
    print(list(lst))
    # 结果是:
    [{'id': 3, 'name': 'Mack', 'age': 23}, {'id': 5, 'name': 'Gudo', 'age': 67}]
    # filter得到的结果是迭代器,也可以按照迭代器的方式来取值也是可以的
    while True:
      try:
          print(lst.__next__())
      except StopIteration:
          break
        # 结果是:
        {'id': 3, 'name': 'Mack', 'age': 23}
          {'id': 5, 'name': 'Gudo', 'age': 67}
  • 映射函数map

    li = [1,2,3,4,5,5,6,342,2,23]
    li = map(lambda x : x ** 2, li)
    print(list(li))
    # map的用法和filter的用法完全一致,格式:map(条件函数,迭代对象)
    # 得到的结果也是迭代器

内置函数

标签:als   red   注意   key   css   映射   迭代   方式   依据   

原文地址:https://www.cnblogs.com/ddzc/p/12185913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!