• 常用内置函数,匿名函数,递归函数


    一, 匿名函数:没有名字的函数,lambda

    • 只能构建简单的函数,一句话函数

      def func(x, y):
          return x + y
      print(func(1, 2))
      
      func2 = lambda x, y: x + y   # lambda 定义一个匿名函数
      print(func2(1, 2))
      
      func4 = lambda a, b: a if a > b else b
      # 匿名函数最常用的就是与内置函数结合使用
      

    二, 内置函数:python中内置的函数,有68种

    1. eval():剥去字符串的外衣,返回最终结果,要慎用

      s = '5 + 9'
      print(eval(s)) # 14
      
    2. exec():执行字符串中的代码流,没有返回值

      s = '''
      for i in [1,2,3]:
          print(i)
      '''
      exec(s)
      
    3. hash():获取一个对象(可哈希对象:int,str,bool,tuple)的哈希值

    4. help():查看函数或模块的详细说明

    5. callable():用于检查一个对象是否是可以调用的,如果返回True,仍然有可能调用失败,但是返回False,则一定不会成功

      name = '马倩'
      def func():
          pass
      print(callable(name))  # False
      print(callable(func))  # True
      
    6. int():用于将一个字符串或数字转换为整型

      print(int())  # 0
      print(int('12'))  # 12
      print(int(3.6))  # 3
      
    7. float():用于将整数和字符串转换成浮点数

    8. complex():用于创建复数,或者将字符串或数转换成复数

    9. bin():将十进制转换成二进制

    10. oct():将十进制转换成八进制字符串并返回

    11. hex():将十进制转换成十六进制字符串并返回

    12. divmod():计算除数与被除数的结果,返回一个包含商和余数的元组(a//b,a%b)

      print(divmod(10, 3))  # (3, 1)  分页用到
      
    13. round():保留浮点数的小数位数,默认保留整数

      print(round(3.1415926, 2)) # 3.14 四舍五入
      
    14. pow():求x**y次幂

      # 第三个参数为x**y的结果对z取余
      print(pow(2, 3))  # 2**3 8
      print(pow(2, 3, 3)) # 8对3取余 2
      
    15. ord():输入字符找该字符编码的位置,unicode

    16. chr():输入位置数字找出其对应的字符,unicode,有用

    17. repr():返回一个对象的string形式(原形毕露)

      print(repr('123')) # '123
      
    18. all():可迭代对象中全是True才是True

    19. any():可迭代对象中,有一个True就是True

    20. 接下来的都很重要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    21. print():屏幕输出

      print(1, 2, 3, sep='_') # 1_2_3 sep设定分隔符,默认空格
      print(1, 2, end=' ') # end默认是
      
      
    22. list():定义或转换列表

      lst = list('asdfg') # 括号内放可迭代对象
      # ['a', 's', 'd', 'f', 'g']
      
    23. dic():字典

      字典的创建方式

      dic = {1: '2'}
      dic = [i: 1 for i in range(3)]
      dic = dict(one=1, two=2, three=3) # key不是能是int
      dic = dict.fromkeys(keys, value)  # value都相同
      
    24. abs():获取绝对值

      print(abs(-10))   # 10
      
    25. sum():求和

      # sum(iterable, 初始值默认为0)
      print(sum([1, 2, 3, 4])) # 10
      print(sum([1, 2, 3, 4], 10)) # 20
      
    26. max():求最大值 用法与min()完全相同

    27. min():求最小值

      print(min([22, 11, 45, 2]))   # 2
      # lst = [('maqian', 20), ('xihong', 18), ('xiaomi', 22)]
      # 找年龄最小的元组
      print(min(lst)) # ('maqian', 20),按照可迭代对象的第一个元素的第一个字符排序
      
      # 通过设置key去使用min(),key=函数名,返回值是什么就按照什么进行比较
      # min()会自动的将可迭代对象的每一个元素作为实参传给函数,最后将遍历的那个元素返回
      print(min(lst, key=lambda x: lst[1]))  # 使用匿名函数
      
    28. reversed():将一个可迭代对象翻转,返回翻转的迭代器

      s = 'maqian'
      for i in reversed(s):
      	print(i)  # n a i q a m
      
    29. bytes():编码

      s = '马倩'
      print(s.encode('utf-8'))  # 第一种方法
      print(bytes(s, encoding='utf-8') # 第二种方法
      
      # 编码
      b = b'xe5xb0x8fxe6x98x8e'
      print(b.decode('utf-8'))  # 第一种方法
      print(str(b, encoding='utf-8')) # 第二种方法
      
    30. zip():拉链方法,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的内容(迭代器),如果个个可迭代对象的元素个数不一致,则按照长度最短的返回

      lst1 = [1,2,3]
      lst2 = ['a','b','c','d']
      lst3 = (11,12,13,14,15
      fol el in zip(lst1, lst2, lst3):
      	print(el)
      # (1, 'a', '11')
      # (2, 'b', '12')
      # (3, 'c', '13')
      
    31. sorted():排序

      l1 = [7, 4, 1, 6,]
      print(sorted(l1)) # 形成了新的列表
      # 加key
      lst = [
          {'name': 'xiaohong', 'age': 73},
          {'name': 'xiaoming', 'age': 35},
          {'name': 'xiaoli', 'age': 25},
      ]
      print(sorted(lst, key=lambda x: x['age'])) # 按照年龄排序
      print(sorted(lst, key=lambda x: x['age'], reverse=True)) # 第三个参数,逆序
      
    32. filter(): 过滤,相当于生成器表达式的筛选模式,返回一个迭代器

      l1 = [56, 67, 12, 34, 78, 90]
      print([i for i in l1 if i > 60])  # [67, 78, 90]
      print(list(filter(lambda x: x > 60, l1))) # [67, 78, 90]
      
    33. map():相当于生成器表达式的循环模式

      l1 = [56, 67, 12, 34, 78, 90]
      print([i**2 for i in l1])
      print(list(map(lambda x: x**2, l1))
      
    34. reduce():python 3从内置函数剔除了,放到了模块中

      from functools import reduce
      print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])) # 15
      '''
      第一次: x,y 1,2 求和 3  记录到内存
      第二次: x,y 3,3 求和 6  记录到内齿
      第三次: x,y 6,4 求和 10  记录到内齿
      第四次: x,y 10,5 求和 15  返回
      '''
      

    三, 递归函数

    • 函数或其他的代码都可以解决递归解决的问题,但是递归在某些时候能有出奇制胜的效果

    • 自己调用自己

      def func(n):
          print('in func')
          n += 1
          print(n)
          func(n)
      func(0)
      # 官网规定:默认递归的最大深度是1000次
      # 如果递归超过100次还没有解决这个问题,那么执意使用递归,效率很低.
      # import sys
      # sys.setrecursionlimit(10000000)  # 设定递归最大次数
      
      # 例一
      def age(n):
          if n == 1:
              return 18
          else:
              return age(n - 1) + 2
      print(age(4))
      '''
      n = 4      age(3) + 2
      n = 3      age(2) + 2
      n = 2      age(1) + 2
      n = 1      18
      '''
      # 例二
      l1 = [1, 3, 5, ['小马', '小刘', 18, [33, 44, [55, 77]]], [99, 22, 11, 9], 21]
      
      def func(lst):
          for el in lst:
              if type(el) != list:
                  print(el)
              else:
                  func(el)
      func(l1)
      
  • 相关阅读:
    455. Assign Cookies
    [leetcode]Linked List Cycle
    *[topcoder]GooseTattarrattatDiv1
    [topcoder]FoxAndChess
    *[topcoder]TheTree
    *[topcoder]LittleElephantAndBalls
    *[topcoder]HexagonalBoard
    *[topcoder]AstronomicalRecords
    *[topcoder]LittleElephantAndIntervalsDiv1
    [topcoder]IncrementAndDoubling
  • 原文地址:https://www.cnblogs.com/zyyhxbs/p/11066358.html
Copyright © 2020-2023  润新知