zoukankan      html  css  js  c++  java
  • 函数之高阶函数

    内置函数

    1,初级内置函数

    • eval:执行字符串类型的代码,并返回最终结果。

      eval('2 + 2')  # 4
      n=81
      eval("n + 4")  # 85
      eval('print(666)')  # 666
      
    • exec:执行字符串类型的代码。

      s = '''
      for i in [1,2,3]:
          print(i)
      '''
      exec(s)
      

      以上两个内置函数很强大 工作中禁止使用

    • hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。

      print(hash(12322))
      print(hash('123'))
      print(hash('arg'))
      print(hash('alex'))
      print(hash(True))
      print(hash(False))
      print(hash((1,2,3)))
      
      '''
      -2996001552409009098
      -4637515981888139739
      1
      2528502973977326415
      '''
      
    • help:函数用于查看函数或模块用途的详细说明。

      print(help(list))
      print(help(str.split))
      
    • callable:函数用于检查一个对象是否是可调用的。如果返回True,仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

      name = 'alex'
      def func():
          pass
      print(callable(name))  # False
      print(callable(func))  # True
      
    • int:函数用于将一个字符串或数字转换为整型。

      print(int())  # 0
      print(int('12'))  # 12
      print(int(3.6))  # 3
      print(int('0100',base=2))  # 将2进制的 0100 转化成十进制。结果为 4
      
    • float:函数用于将整数和字符串转换成浮点数。

    • complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。

      print(float(3))  # 3.0
      print(complex(1,2))  # (1+2j)
      
    • bin:将十进制转换成二进制并返回。

    • oct:将十进制转化成八进制字符串并返回。

    • hex:将十进制转化成十六进制字符串并返回。

      print(bin(10),type(bin(10)))  # 0b1010 <class 'str'>
      print(oct(10),type(oct(10)))  # 0o12 <class 'str'>
      print(hex(10),type(hex(10)))  # 0xa <class 'str'>
      

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

      round:保留浮点数的小数位数,默认保留整数。

      pow:求xy次幂。(三个参数为xy的结果对z取余)

      print(divmod(7,2))  # (3, 1)
      print(round(7/3,2))  # 2.33
      print(round(7/3))  # 2
      print(round(3.32567,3))  # 3.326
      print(pow(2,3))  # 两个参数为2**3次幂
      print(pow(2,3,3))  # 三个参数为2**3次幂,对3取余。
      
    • bytes:用于不同编码之间的转化。

      # s = '你好'
      # bs = s.encode('utf-8')
      # print(bs)
      # s1 = bs.decode('utf-8')
      # print(s1)
      # bs = bytes(s,encoding='utf-8')
      # print(bs)
      # b = '你好'.encode('gbk')
      # b1 = b.decode('gbk')
      # print(b1.encode('utf-8'))
      
    • ord:输入字符找当前字符编码的位置

    • chr:输入当前编码的位置数字找出其对应的字符

      # ord 输入字符找该字符编码的位置
      # print(ord('a'))
      # print(ord('中'))
      
      # chr 输入位置数字找出其对应的字符
      # print(chr(97))
      # print(chr(20013))
      
    • repr:返回一个对象的string形式(原形毕露)。

      # %r  原封不动的写出来
      # name = 'taibai'
      # print('我叫%r'%name)
      
      # repr 原形毕露
      print(repr('{"name":"alex"}'))
      print('{"name":"alex"}')
      
    • all:可迭代对象中,全都是True才是True

    • any:可迭代对象中,有一个True 就是True

      # all  可迭代对象中,全都是True才是True
      # any  可迭代对象中,有一个True 就是True
      # print(all([1,2,True,0]))
      # print(any([1,'',0]))
      

    高阶函数

    • abs():绝对值--返回的都是正数

    • lis = [1,2,-3,-5,6]
      print([abs(i) for i in lis])
      ##################
      [1, 2, 3, 5, 6]
      
    • enumerate:枚举--(可迭代对象,序号的起始值)默认的起始值是0

    • lis =[1,2,3,4,5,6]
      print([i for i in enumerate(lis)])
      print([i for i in enumerate(lis,10)])
      ##########################
      [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
      [(10, 1), (11, 2), (12, 3), (13, 4), (14, 5), (15, 6)]
      
    • max() :取最大值

    • min():取最小值

    • sum():求和

    • lis = [1,2,3,4,5,6]
      print(max(lis))
      print(min(lis))
      print(sum(lis))
      ##############
      6
      1
      21
      
    • range():可迭代对象

    • Python2

      • range(0,10) :获取的是一个列表
      • xrange(0,10):或取的是一个可迭代对象
    • Python3

      • range():是一个可迭代对象
      • range.iter()
    • sep="" :多个元素的连接符

    • end="" :end" ", end" " ,end==" "

    • dict()

    • tu =( (1,2),(2,3),(3,4))
      print(dict(tu))
      print(dict([i for i in enumerate(range(6),1)]))
      print(dict(key=1,a=b))
      #################################
      {1: 2, 2: 3, 3: 4}
      {1: 0, 2: 1, 3: 2, 4: 3, 5: 4, 6: 5}
      {'key': 1, 'a': 2}
      
    • list():可迭代对象迭代到列表中

    • print(list('david'))
      ['d', 'a', 'v', 'i', 'd']
      
    • zip() :拉链,按照最少的进行合并

    • lis = [1,2,3,4,5]
      lis1 = ['a','b','c','d','e','f']
      print(dict(zip(lis,lis1)))
      print(dict(list()zip(lis,lis1)))
      ##########################
      {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
      {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
      
    • dir:查看当前函数的方法

    • print(dir(list))
      

    匿名函数

    • lambda:关键字

    • 语法:函数名 = lambda 参数:返回值

      ​ 参数位置是函数的形参,形参之间用逗号隔开

      ​ 返回值在冒号之后设置

      ​ 参数位置可以没有形参,但是必须有返回值

    • 匿名函数不管多复杂,只能写一行,且逻辑结束后直接返回数据,只能返回一种数据类型

    • func = lambda x:x
      print(func(2))
      ####################
      print((lambda x:x)(2))
      ####################
      lis = [lambda x:x*x for x in range(5)]
      print(lis[2](2))
      ####################
      lis = [lambda  : x for i in range(5)]
      print(lis[2]())
      ######################
      2
      2
      4
      16
      

    常用函数

    • format()

      • format(13,">20") 右对齐
      • format(13,"<20") 左对齐
      • format(13,"^20") 居中
      • format(13,'o8b') 十进制转换二进制
      • format(13,"08d") 十进制加八位
      • format(13,'08o') 十进制转换成八进制
      • format(13,'08x') 十进制转换成十六进制
    • filter() :筛选过滤

    • 语法:filter(function,iterable)

      • function :用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回单True或者False来判断是否表刘此项数据
      • iterable:可迭代对象
    • lis = [1,2,3,4,5,6,7]
      def func(s):
      	return  s>3
      lis = list(filter(func,lis))
      print(lis)
      ############################
      print(list(filter(lambda x : x % 2 == 1 ,lis)))
      
      
      
    • map():对象映射

    • map(function,iterable),可以对可迭代对象中的每一个元素进行映射,分别执行function

    • print(list(map(lambda x : x*x,[1,2,3,5,7,6,9])))
      ##########################
      [1, 4, 9, 25, 49, 36, 81]
      
      
    • reversed :反转

    • 反转后的新建空间,相当于copy后反转

    • 列表的reverse反转后的内存地址不变

    • sorted :排序函数

      • 语法(iterable.key=None,reverse=False)

      • iterable :可迭代对象

      • key:排序规则,指定函数,在sorted内部会将可迭代对象中的每一个元素传递个这个函数的参数,根据函数运算的结果进行排序

      • reverse:是否是倒序,True 倒序;False 正序;

      • lis = [1,3,2,4,64,2,9]
        lis1 = sorted(lis)
        print(lis)      ###原列表不会变
        print(lis1) ###返回单列表是经过排序的
        
        
        
      • 字典用sorted排序

      • dic= {1:'a',2:'b',3:'c'}
        print(sorted(dic)  ###字典排序返回的就是排序后的key
        ###################
        [1,2,3])
        
        
    • reduce l:累计算

      • print(reduce(lambda x,y:x-y,[1,2,3,4,5]))
        ################
        15
        
        
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    Oracle在linux下的开机自启动(详细)转
    Xlib: connection to ":0.0" refused by server Xlib: No protocol specified解决方案
    java Comparable和Comaprator的对比
    java异常——RuntimeException和User Define Exception
    堆排序
    Java实现 蓝桥杯 算法提高 复数四则运算
    Java实现 蓝桥杯 算法训练 约数个数
    Java实现 蓝桥杯 算法训练 约数个数
    Java实现 蓝桥杯 算法提高 01背包
    Java实现 蓝桥杯 算法提高 判断名次
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033593.html
Copyright © 2011-2022 走看看