zoukankan      html  css  js  c++  java
  • Python Day18

    列举一些常用的内置函数:

    1.chr()和ord()

    1 chr()将数字转换为对应的ascii码表字母
    2 >>> r=chr(65)
    3 >>> print(r)
    4 A
    1 ord()将字母转换为对应的ascii码表数字
    2 >>> n=ord('a')
    3 >>> print(n)
    4 97

    需要注意的是,中文汉字也可以

    1 >>> ord("") 
    2 23384
    3 >>> chr(23384)
    4 ''

    2.

    join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串

    下面给出一个join函数使用的示例:#join无法将字符型和整型相加

    import random
    li=[]
    for i in range(6):
        r=random.randrange(0,6)
        if r==2 or r==4:
            num=random.randrange(0,10)
            li.append(str(num)) #使用str将num转换为字符型,因为在后面使用join时,join无法将字符型和整型相加
        else:
            tem=random.randrange(65,91)
            c=chr(tem)
            li.append(c)
    result=''.join(li)
    print(result)

    3.compile()#将字符串编译成python代码

    4.exec() #exec执行编译后的代码,没有返回值

       eval() #eval只能处理python的表达式,有返回值 

    1 >>> s='print (123)'
    2 >>> r=compile(s,"<string>","exec") #不写入<string>,则应当写文件#名称,第三处可有三种写法,分别是:single单行代码  eval 表达式 exev等#同于python代码
    3 >>> exec(r) exec执行编译后的代码,没有返回值
    4 123
    5 >>> exec("print('hello world')")
    6 hello world
    1 >>> s='3+2'
    2 >>> eval(s)
    3 5

    5.dir():查看对象的方法

    6.help():查看对象的方法和使用#可查看源码

    7.divmod()#得到两个数字的商和余数

    1 >>> divmod(45,10)
    2 (4, 5)

    8.isinstance()  #判断对象是哪个类的实例

    1 >>> s=[11,22,33]
    2 >>> r=isinstance(s,list)
    3 >>> print(r)
    4 True

    9.

     filter(函数,可迭代对象) #对序列做过滤处理

    #循环第二个参数,执行第一个参数函数,将第二个参数作为函数的参数,如果返回结果为True,则接受

    def f2(arg):
        if arg>22:
            return True
    li=[11,22,33,44,55]
    ret=filter(f2,li)
    print(list(ret))
    
    
    ##################################################################
    def f1(arg):
        result=[]
        for item in arg:
            if item > 22:
                result.append(item)
        return result
    li=[11,22,33,44,55]
    ret=f1(li)
    print(ret)
    
    ###################################################
    li=[11,22,33,44,55]
    result=filter(lambda a:a>33,li) #lambda表达式默认返回函数体的值,和普通函数more返回值为None不相同
    print(list(result))

    10.

    map(函数,可迭代对象)  #将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回

    li=[11,22,33,44,55]
    def f1(arg):
        result=[]
        for i in arg:
            result.append(100+i)
        return result
    r=f1(li)
    print(list(r))
    
    #############################################
    li=[11,22,33,44,55]
    def f2(a):
        return a+100
    result=map(f2,li)
    print(list(result))
    ######################################################
    result=map(lambda  a:a+100,li)
    print(list(result))

    11.

    len()#计算对象的长度

    注:python2使用字节计算,python3使用字符来计算,若果想按字节计算,可以先使用bytes转换成字节

    >>> s='李杰'
    >>> print(len(s))
    2
    >>> b=bytes(s,encoding='utf-8')
    >>> print(len(b))
    6
    #不明白的可以使用for循环李杰,在2.7和3.5看结果有什么不一样

    12.max()返回给定参数的最大值,参数可以为序列
         min()返回给定参数的最小值,参数可以为序列

    1 >>> max(151,48,45)
    2 151
    3 >>> min(151,48,45)
    4 45

    13.pow()#求幂

    >>> pow(2,3)
    8
    >>> pow(2,10)
    1024

    14.round()#四舍五入

    1 >>> round(1.8)
    2 2
    3 >>> round(2.4)
    4 2

    15.zip()#接受任意多个序列作为参数,返回一个tuple列表

    python3.5 返回一个迭代器对象
    >>> a=(1,2,3)
    >>> b=('a','b','c')
    >>> c= zip(a,b)
    >>> print(c)
    <zip object at 0x02A5CCD8>
    
    
    python2.7 返回一个元组
    >>> a=(1,2,3)
    >>> b=('a','b','c')
    >>> c= zip(a,b)
    >>> print(c)
    [(1, 'a'), (2, 'b'), (3, 'c')]

    16.any()#给定的对象中只要有一个对象bool值为true时返回true

     all()#给定的对象中只有全部对象bool值为true时返回true。

    1 >>> any([11,'a',[]])
    2 True
    3 >>> all([11,'a',[]])
    4 False

    17.reduce()#将一个数据集合(列表,元组等)中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果

    def myadd(x,y):  
            return x+y  
        sum=reduce(myadd,(1,2,3,4,5,6,7))  
        print sum  
    
    #结果就是输出1+2+3+4+5+6+7的结果即28
    也可以用lambda的方法,更为简单:
        sum=reduce(lambda x,y:x+y,(1,2,3,4,5,6,7))  
        print sum 
     在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.

     二 匿名函数

    python 使用 lambda 来创建匿名函数。

    所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数

    • lambda 只是一个表达式,函数体比 def 简单很多。
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
    • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
    # 可写函数说明
    sum = lambda arg1, arg2: arg1 + arg2;
     
    # 调用sum函数
    print ("相加后的值为 : ", sum( 10, 20 ))
    print ("相加后的值为 : ", sum( 20, 20 ))
    # 现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    
    l1 = (('a'),('b'))
    l2 = (('c'),('d'))
    print(list(map( lambda l1,l2:{l1:l2},l1,l2)))
    
    输出结果
    
    [{'a':'c'},{'b':'d'}]
  • 相关阅读:
    luogu4365 秘密袭击 (生成函数+线段树合并+拉格朗日插值)
    [模板]左偏树
    luogu4166 最大土地面积 (旋转卡壳)
    bzoj3168 钙铁锌硒维生素 (矩阵求逆+二分图最小字典序匹配)
    [模板]矩阵树定理
    [模板]快速傅里叶变换(FFT)
    [模板]Min_25筛
    [模板]杜教筛
    [模板]莫比乌斯反演
    DrawerLayout—侧拉栏的使用
  • 原文地址:https://www.cnblogs.com/liuduo/p/7496060.html
Copyright © 2011-2022 走看看