zoukankan      html  css  js  c++  java
  • 简说内置函数

    内置函数

    abs()  取绝对值

    all()   直接将可迭代对象里面的所有的值进行布尔运算,所有都是真才为真 相当于and

    any()   与all相似,但是只有一个为真,结果就是真 相当于or

    bin()  把十进制转换成二进制

    hex()   十进制转换成十六进制

    oct()    十进制转换成8进制

    bool()   将内容转换成布尔值

    bytes()   把一个字符串转换成字节的形式 bytes(‘panzhenwei’,encoding = ‘utf-8’)

    大概的作用是panzhenwei.encode(‘utf-8’)的作用是一样的,不过后者只有字符串才有的功能

    chr()  按照ascii 的顺序进行转换,显示指定内容在ascii对应的东西、

    enumerate(索引,可迭代对象,start)  枚举可迭代对象的索引与元素以元组的形式输出

    start 默认为0 如果设置了相关的 int数据类型的话,索引位置输出为元素索引下标+strat的值,之后才以输入: 输出如下:(元素索引下标+start, 元素)

    ord()   与chr 相反,输入ascii 表的内容,输出对应的数字

    dir()   打印某个对象下面都有什么方法只是查看到 的作用

    divmod(10,3) eg 查找到的内容有10条的记录,每页放3条记录,但是能够放多少页如果不为0则需要多分一页

    eval()  将字符串还原为原来的内容,也可以把字符串中的表达式进行运算

    hash()  计算某个东西的哈希值,只能是对不可变数据类型进行哈希

    pow(x,y,z=None)   计算x 的y次方是多少 前面得出的结果后取余

    eg:当z = 2 的时候, x 的y次方等于999999 之后将999999 %2 输出的结果就是输入z=2 的结果没有对z进行设置的话,那么默认只是进行了次方的运算

    reversed()   将可迭代的东西进行翻转,返回的是一个迭代器

    round() 进行四舍五入的计算

    set() 将可迭代的东西转换成集合

    slice(3:4:2)  设定切片的模板

    s = selice(3:4:2)

    a= [1,2,3,4,5,6,7,8]

    a[s]这就是切片,但是如果只是想使用模板的某个部分直接使用相关的部分就行

    eg:a[s.start]     a[s.stop]   或者是a[a.step]

    sorted(可迭代对象,key=None, reversed =False)    默认是升序

    lst = [1,2,3,4]

    eg:sorted(lst key = lambda x : x+y )

    str( ) 转换成字符串类型

    sum() 计算一个可迭代对象的和

    type()   查看指定内容的数据类型

    vars( )  如果没有指定参数的话,作用相当于locals().

    字符串类型代码的执行

    eval()       用来执行一个字符串表达式,,并返回最终结果,如果只是可迭代对象,可以将其还原为原来的数据类型

    print(eval("2+2"))s

    exec()       执行字符串类型的代码

     exec("""

    for i in range(10):

        print(i)

    """)

    compile(要执行的字符串代码,‘存放字符串代码的文件路径’,执行该函数的模式)

    '''

        参数说明:

            1. resource 要执⾏行行的代码, 动态代码⽚片段

            2. 文件名, 代码存放的⽂文件名, 当传⼊入了了第⼀一个参数的时候, 这个参数给空就可以了了

            3. 模式, 取值有3个,

                1. exec: ⼀一般放⼀一些流程语句句的时候

                2. eval: resource只存放⼀一个求值表达式.

                3. single: resource存放的代码有交互的时候. mode应为single

    '''

    如果字符串中的代码中没有任何的返回值的话,可以通过使用exec的模式

     code = 'for i in range(10):print(i)'
    c = compile(code,'',mode = 'exec')
    exec(c)
     

    如果字符窜中执行的结果中含有返回值的话,可以通过使用eval的模式

    code1 = '2+3+4+5'
    c = compile(code1 ,'',mode='eval')
    print(eval(c))

    小结:

    有返回值的字符串形式的代码用eval(). 没有返回值的字符串形式的代码用exec(). 一般很少用到compile()

    # 字符串串

    print(format('test', '<20'))    # 左对齐

    print(format('test', '>20'))    # 右对齐

    print(format('test', '^20'))    # 居中

    # 数值

    print(format(3, 'b'))   # 二进制

    print(format(97, 'c'))   # 转换成unicode字符

    print(format(11, 'd'))   # 十进制

    print(format(11, 'o'))   # 八进制

    print(format(11, 'x'))   # 十六进制(⼩小写字⺟母)

    print(format(11, 'X'))   # 十六进制(⼤大写字⺟母)

    print(format(11, 'n'))   # 和d一样

    print(format(11))   # 和d一样

    # 浮点数

    print(format(123456789, 'e'))   # 科学计数法. 默认保留6位小数

    print(format(123456789, '0.2e'))   # 科学计数法. 保留2位小数(⼩小写)

    print(format(123456789, '0.2E'))   # 科学计数法. 保留2位小数(⼤大写)

    print(format(1.23456789, 'f'))   # 小数点计数法. 保留6位小数

    print(format(1.23456789, '0.2f'))   # 小数点计数法. 保留2位小数

    print(format(1.23456789, '0.10f'))   # 小数点计数法. 保留10位小数

    print(format(1.23456789e+10000, 'F'))   # 小数点计数法.

    如果有参数的话,就相当于object.__dict__ 但是前提是参数具有__dict__的属性

    def test():
        gg = 'cisco'
       
    print(locals())

    结果是将相关的变量以字典的形式进行输出

    max() 取最大值的详细用法

                   例如:people=[
        {'name':'alex','age':1000},
        {'name':'wupei','age':10000},
        {'name':'yuanhao','age':9000},
        {'name':'linhaifeng','age':18},
    ] 取出年龄最大的值
     max(people,key=lambda dic:dic[‘age’]) key= 指定了比较的规则
    相当于

    ret=[]
    for item in people:
        ret.append(item['age'])
    print(ret)
    max(ret)

     

    min() 取最小值

    内置函数map(函数,可迭代对象) 处理序列中的每个元素,得到的结果是迭代器的内存地址,可以通过使用list()转换成列表,该“列表”
    的元素个数即位置与原来的一样

    # 通过lambda 控制需求,将传进去的可迭代对象进行加工作用相当于 内置函数map()
    # 内置函数map(函数,可迭代对象) 使用该函数返回的是一个可迭代对象的内存地址,可以通过使用list()将该内存地址直接转换成列表
    #在python 2 中map的处理结果就是一个列表
    # def add_one():
    #     return x+1

    #处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样

    # map()


    nam = [1,2,3,4]
    def map_test(func,array):
        ret = []
        for i in array:
            res = func(i)
            ret.append(res)
        return ret
    print(map_test(lambda x:x+1 ,nam))

    callable 判断一个东西是否能够像函数一样被调用

    zip 拉链函数,水桶效应

    lis1 = [1,2,3,4]
    lis2 = ['一','二','三']
    lis3 =['壹','贰','叁']
    z = zip(lis1,lis2,lis3)
    print(z) #<zip object at 0x0000004D1DBD8F88>
    for i in z:
        print(i)

    结果

     

    内置函数map(函数,可迭代对象序列)    迭代第二个参数,将每一个元素作为函数的参数进行计算,得到的结果是迭代器的内存地址,可以通过使用list()转换成列表,该“列表”的元素个数即位置与原来的一样
    def func():

            return x+1

    基本原理如下
    nam = [1,2,3,4]
    def map_test(func,array):
        ret = []
        for i in array:
            res = func(i)
            ret.append(res)
        return ret
    print(map_test(lambda x:x+1 ,nam))

     

    内置函数 filter(func or None,iterable,)
    如果第一个参数没有设置函数(默认不设置),只是含有第二个参数的话,遍历第二个参数中的每个元素,判断每个元素得到的布尔值,如果是Ture就保留下来(得到的是一个可迭代的内存地址—迭代器)

    如果第一个元素设置了函数,就会将第二个参数的里面的元素迭代出来作为函数的参数进行计算,如果是True的话,就会被留下来

    people=[

        {'name':'alex','age':1000},

        {'name':'wupei','age':10000},

        {'name':'yuanhao','age':9000},

        {'name':'linhaifeng','age':18},

    ]

    print(list(filter(lambda p:p['age']<=18,people)))


    大概的功能如下:

    def func(n):

            return n.endswith(‘sb’)
    sb = ['gg_sb','cc_sb','zhengchanren']
    filter() 函数的原理如下:
       def filter_test(func,array):
         ret= []
         for i in array:
            if func(i):
                ret.append(i)
         return ret

     

    a = filter_test(lambda n:n.endswith('sb'),sb)
    print(a)


    reduce(函数,可迭代序列,起始值) 函数 处理一个序列,然后把序列进行合并的操作

    #reduce():处理一个序列,然后把序列进行合并操作

    from functools import reduce

    print(reduce(lambda x,y:x+y,range(100),100))

    print(reduce(lambda x,y:x+y,range(1,101)))


    在python3 中要使用reduce函数,在导入相关的模块
    num_1 = [1,2,3,4]
    def reduce_test(func,array,init = None):
        if init == None:
            res = array.pop(0)
        else:
            res = init
        for i in array:
            res=func(res,i)
        return res

    print(reduce_test(lambda x,y:x+y,num_1,100))

    面向对象使用的内置函数

    1.issubclass:判断面向对象中a是否是b的子类
    #判断面向对象中a是否是b的子类
    class Base:
        pass
    class Foo(Base):
        pass
    class Bar(Foo):
        pass
    print(issubclass(Foo,Base))#Ture
    print(issubclass(Bar,Base))#Ture  可以向上查找,即父类的父类
    View Code
    2.type :查看对象是哪个类创建的
    class Teacher:
        pass
    t = Teacher()
    print(type(t))  #<class '__main__.Teacher'>表示的是Teacher的类创建的
    # 实际应用如下:
    def cal(a,b):
        if (type(a) == int or type(a) == float) and  (type(b) == int or type(b) == float):
            print(a+b)
    
        else:
            print('输入有误,请输入符合类型是数字:')
    View Code
    3.isinstance判断一个对象是否是一个家族体系中的(只能从本身向祖宗的方向进行判断)
    #isinstance判断一个对象是否是一个家族体系中的(只能从本身向祖宗的方向进行判断)
    class Animal:
        pass
    class Cat(Animal):
        pass
    class BlueCat(Cat):
        pass
    gg = Cat()
    print(isinstance(gg,Cat))#True
    print(isinstance(gg,Animal))#True
    print(isinstance('gg',BlueCat))#False
    View Code
    isinstance也具有issubclass的功能,不过没有issubclass精确
    print(isinstance('1',str))#True
    print(isinstance(1,int))#True

    内置函数大概思维导图

    https://www.processon.com/mindmap/5bdc01dde4b0fc2dc1a768cb

  • 相关阅读:
    Snuke's Subway Trip
    codevs 1606 台阶
    COGS 2334. [HZOI 2016]最小函数值
    codevs 1052 地鼠游戏
    洛谷 P1091 合唱队形
    洛谷 P1376 机器工厂
    codevs 2618 核电站问题
    vijos 1524 最小监视代价
    洛谷 P1690 贪婪的Copy
    51nod 1135 原根
  • 原文地址:https://www.cnblogs.com/vivi0403/p/9898127.html
Copyright © 2011-2022 走看看