• python内置函数


    python官方文档内置函数BIF:https://docs.python.org/3/library/functions.html

      

    数学相关:

    abs(a) : 求取绝对值。abs(-1)
    max(list) : 求取list最大值。max([1,2,3])

    #1.传入的多个参数的最大值
    print(max(1,2,3,4)) #输出 4

    #2.传入可迭代对象时,取其元素最大值
    s='12345'
    print(max(s)) #输出 5

    #3.传入命名参数key,其为一个函数,用来指定取最大值的方法

    s = [
    {'name': 'sumcet', 'age': 18},
    {'name': 'bbu', 'age': 11}
    ]
    a = max(s, key=lambda x: x['age'])
    print(a) #输出 {'name': 'sumcet', 'age': 18}

    min(list) : 求取list最小值,同sum()。
    sum(list) : 求取list元素的和。 

    1. 函数功能是对可迭代类型进行求和。要求:① 接收对象是可迭代类型。② 可迭代对象所有元素类型是数值型。

    sum([1,2,3]) ,sum((1,2,3))。

    2. 可以传入一个可选参数start,表示求和前的初始化值,如果传入空的可迭代数据类型,则返回初始值。

    >>> sum((1,2,3,4),2)
    12
    # 传入空可迭代对象,直接返回初始值
    >>> sum([],2)
    2

    sorted(list) : 排序,返回排序后的list。

    sorted([36,6,-12,9,-22],key=abs) 高阶函数,以绝对值大小排序
    如果需要排序的是一个元组,则需要使用参数key,也就是关键字。
    >>> a = [('b',2), ('a',1), ('c',0)] >>> list(sorted(a,key=lambda x:x[1])) 按照元组第二个元素排序
    sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower) 忽略大小写排序
    sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower,reverse=True) 反向排序

    len(list) : list长度,len([1,2,3])

    1. 返回对象的长度,参数可以是序列(比如字符串、字节数组、元组、列表和range对象),或者是集合(比如字典、集合、不可变集合)

    2. 如果参数为其它类型,则其必须实现__len__方法,并返回整数,否则报错。
    divmod(a,b): 获取商和余数。 divmod(5,2) >>> (2,1)
    pow(a,b) : 获取乘方数。pow(2,3) >>> 8

    函数有两个必需参数x,y和一个可选参数z,结果返回x的y次幂乘(相当于x**y),如果可选参数z有传入值,则返回幂乘之后再对z取模(相当于pow(x,y)%z)。
    round(a,b) : 获取指定位数四舍五入后的小数。a代表浮点数,b代表要保留的位数。round(3.1415926,2) >>> 3.14

    默认保留0位小数进行取整,返回的是整数。

    如果b小于零,则控制了对浮点数的整数部分的后几位进行四舍五入,小数部分全部清0。
    range(a[,b]) : 生成一个a到b的数组,左闭右开。 range(1,10) >>> [1,2,3,4,5,6,7,8,9]

    range(stop)

    range(startstop[, step]),step是步长,默认是1.

    类型相关

    int(str) : 转换为int型。int('1') >>> 1

    传入字符串,并指定了进制,则按对应进制将字符串转换成10进制整数。

    >>> int('07',8)
    7
    >>> int('0f',16)
    15

    float(int/str) : 将int型或字符型转换为浮点型。float('1') >>> 1.0
    str(int) : 转换为字符型。str(1) >>> '1'

    >>> str(b'xe7x8ex8b', encoding='utf-8')  # 字节转换为字符串
    '王'
    file_bytes = 'b'\xe6\x88\x91\xe6\x98'
    str(file_bytes,'gbk') # 当传入encoding不能解码时,会报错(即errors参数默认为strict)
    str(file_bytes,'gbk','ignore') # 'ignore' 忽略级别,字符编码有错,忽略掉.
    str(file_bytes,'gbk','replace') # 'replace' 替换级别,字符编码有错的,替换成?. 

    bool(int) : 转换为布尔类型。 str(0) >>> False str(None) >>> False
    bytes(str,code) : 接收一个字符串,与所要编码的格式,返回一个字节流类型。bytes('abc', 'utf-8') >>> b'abc' bytes(u'爬虫', 'utf-8') >>> b'xe7x88xacxe8x99xab'

    bytearray():根据传入的参数创建一个新的字节数组
    list(iterable) : 转换为list。 list((1,2,3)) >>> [1,2,3]
    iter(iterable): 返回一个可迭代的对象。 iter([1,2,3]) >>> <list_iterator object at 0x0000000003813B00>
    dict(iterable) : 转换为dict。 dict([('a', 1), ('b', 2), ('c', 3)]) >>> {'a':1, 'b':2, 'c':3}
    enumerate(iterable) : 根据可迭代对象创建枚举对象。

    >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    >>> list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    >>> list(enumerate(seasons, start=1)) #指定起始值
    [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

    tuple(iterable) : 传入可迭代对象,使用其元素创建一个新的元组。 tuple([1,2,3]) >>>(1,2,3),tuple('123') >>>('1','2','3')
    set(iterable) : 转换为set。 set([1,4,2,4,3,5]) >>> {1,2,3,4,5} set({1:'a',2:'b',3:'c'}) >>> {1,2,3}

    frozenset():根据传入的参数创建一个新的不可变集合

    >>> a = frozenset(range(10))
    >>> a
    frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})

    hex(int) : 转换为16进制。hex(1024) >>> '0x400'
    oct(int) : 转换为8进制。 oct(1024) >>> '0o2000'
    bin(int) : 转换为2进制。 bin(1024) >>> '0b10000000000'
    chr(int) : 转换数字为相应ASCI码字符。 chr(65) >>> 'A'
    ord(str) : 转换ASCI字符为相应的数字。 ord('A') >>> 65

    complex():根据传入参数创建一个新的复数

    >>> complex('1+2j') #传入字符串创建复数
    (1+2j)
    >>> complex(1,2) #传入数值创建复数
    (1+2j)

    memoryview():根据传入的参数创建一个新的内存查看对象

    >>> v = memoryview(b'abcefg')
    >>> v[1]
    98
    >>> v[-1]
    103

    slice():根据传入的参数创建一个新的切片对象

    class slice(stop)

    class slice(startstop[, step])

    a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> c1 = slice(5) # 定义c1
    >>> c1
    slice(None, 5, None)
    >>> c2 = slice(2,5) # 定义c2
    >>> c2
    slice(2, 5, None)
    >>> c3 = slice(1,10,3) # 定义c3
    >>> c3
    slice(1, 10, 3)
    >>> a[c1] # 和a[:5:]结果相同
    [0, 1, 2, 3, 4]
    >>> a[c2] # 和a[2:5:]结果相同
    [2, 3, 4]
    >>> a[c3] # 和a[1:10:3]结果相同
    [1, 4, 7]

    super():根据传入的参数创建一个新的子类和父类关系的代理对象,调用父类的方法。

    object():获取一个新的,无特性(geatureless)对象。Object是所有类的基类。它提供的方法将在所有的类型实例中共享。

    功能相关:

    eval() : 执行一个表达式,或字符串作为运算。 eval('1+1') >>> 2

    exec() : 执行python语句。 exec('print("Python")') >>> Python
    filter(func, iterable) : 通过判断函数fun,筛选符合条件的元素,如果func为None则返回iterable中为True的元素。 a=filter(lambda x: x%2, [1,2,3,4,5,6]) >>> list(a) >>> [1,3,5]
    map(func, *iterable) : 将func用于每个iterable对象。 map(lambda a,b: a+b, [1,2,3,4], [5,6,7]) >>> [6,8,10]

    >>> a = map(ord,'abcd')
    >>> a
    <map object at 0x03994E50>
    >>> list(a)
    [97, 98, 99, 100]

    zip(*iterable) : 将iterable分组合并。返回一个zip对象。 list(zip([1,2,3],[4,5,6])) >>> [(1, 4), (2, 5), (3, 6)]
    type():返回一个对象的类型。
    id(): 返回对象的内存地址。
    hash(object):返回一个对象的hash值,具有相同值的object具有相同的hash值。 hash('python') >>> 7070808359261009780
    help():传入参数调用函数时,将查找参数是否是模块名、类名、函数名,如果是将显示其使用说明。
    isinstance(object, classinfo):判断一个对象是否为该类的一个实例。

    当第二个参数是元组时,表示object是元组中任一个类的实例时返回True。

    >>> isinstance(1,(int,str))
    True

    issubclass():判断一个类是否为另一个类的子类。

    next(iterator[, default]) : 接收一个迭代器,返回迭代器中下一项的数值,如果设置了default,则当迭代器中的元素遍历后,输出default内容。
    reversed(sequence) : 生成一个反转序列的迭代器。 reversed('abc') >>> ['c','b','a']

    all():接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False

    any():接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False

    format():格式化输出字符串,format(value, format_spec)实质上是调用了value的__format__(format_spec)方法

    >>> "I am {0}, I like {1}!".format("wang", "moon")    
    'I am wang, I like moon!'

    print(*objects, sep=' ', end=' ', file=sys.stdout, flush=False),用于对象打印输出,sep是分隔符,默认是空格,end是输出的结尾,默认是' '。

    >>> print(1,2,3,sep = '+',end = '=?')
    1+2+3=?

    input():读取用户输入值。

    open(filename [, mode [, bufsize]]):

     打开一个文件,返回一个file对象。 如果文件无法打开,将处罚IOError异常。
     应该使用open()来代替直接使用file类型的构造函数打开文件。
     参数filename表示将要被打开的文件的路径字符串;
     参数mode表示打开的模式,最常用的模式有:'r'表示读文本,'w'表示写文本文件,'a'表示在文件中追加。
     Mode的默认值是'r'。
     当操作的是二进制文件时,只要在模式值上添加'b'。这样提高了程序的可移植性。
     可选参数bufsize定义了文件缓冲区的大小。0表示不缓冲;1表示行缓冲;任何其他正数表示使用该大小的缓冲区;负数表示使用系统默认缓冲区大小。

    其他

    __import__():

    globals() : 返回当前作用域内的全局变量和其值组成的字典。

    locals():返回当前作用域内的局部变量和其值组成的字典。

    dir():不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表

    >>> dir()
    ['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'li', 'li1', 'li2', 'li_1']
    >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

    vars():返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。

    hasattr(object, name):函数功能用来检测对象object中是否含有名为name的属性,如果有则返回True,如果没有返回False

    getattr():获取对象的属性值      
    setattr():设置对象的属性值

    delattr():删除对象的属性 

    callable():方法用来检测对象是否可被调用,可被调用指的是对象能否使用()括号的方法调用。 类对象都是可被调用对象,类的实例对象是否可调用对象,取决于类是否定义了__call__方法。

    >>> class B: #定义类B
        def __call__(self):
            print('instances are callable now.')
    
            
    >>> callable(B) #类B是可调用对象
    True
    >>> b = B() #调用类B
    >>> callable(b) #实例b是可调用对象
    True
    >>> b() #调用实例b成功
    instances are callable now.

    compile(source):将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。

    >>> #流程语句使用exec
    >>> code1 = 'for i in range(0,10): print (i)'
    >>> compile1 = compile(code1,'','exec')
    >>> exec (compile1)
    >>> #简单求值表达式用eval
    >>> code2 = '1 + 2 + 3 + 4'
    >>> compile2 = compile(code2,'','eval')
    >>> eval(compile2)
    10

    repr(object):函数功能返回一个对象的字符串表现形式。repr函数的结果一般能通过eval()求值的方法获取到原对象。

    >>> a = 'some text'
    >>> str(a)
    'some text'
    >>> repr(a)
    "'some text'"
    >>> eval(repr(a))
    'some text'

    装饰器:

    property(fget=None, fset=None, fdel=None, doc=None)

    1. property是一个类,其作用是用来包装类的属性,这个属性可以根据实际需要,控制是否可读(设置fget参数)、可写(设置fset参数)、可删除(设置fdel参数),doc是属性的说明。

    class C:
        def __init__(self):
            self._x = '_x in C'
    
        def getx(self):
            return self._x
    
        def setx(self, value):
            self._x = value
    
        def delx(self):
            del self._x
    
        x = property(getx, setx, delx, "I'm the 'x' property.")
    >>> c = C()
    >>> c.x # 调用 getx
    '_x in C'
    
    >>> c.x = 'x had changed' # 调用 setx
    >>> c.x # 调用 getx
    'x had changed'
    
    >>> del c.x  # 调用 delx
    >>> c.x # 调用 getx
    Traceback (most recent call last):
      File "<pyshell#34>", line 1, in <module>
        c.x
      File "<pyshell#28>", line 6, in getx
        return self._x
    AttributeError: 'C' object has no attribute '_x'

    2. property更优雅的做法是用作装饰器,装饰过的方法就可以以属性方式调用。同时将生成.setter和.deleter装饰器,用于指定可入方法,删除方法。

    >>> class C:
        def __init__(self):
            self._x = '_x in C'
    
        @property
        def x(self):
            """I'm the 'x' property."""
            return self._x
    
        @x.setter
        def x(self, value):
            self._x = value
    
        @x.deleter
        def x(self):
            del self._x
    >>> c = C()
    >>> c.x # 调用 getx
    '_x in C'
    
    >>> c.x = 'x had changed' # 调用 setx
    >>> c.x # 调用 getx
    'x had changed'
    
    >>> del c.x  # 调用 delx
    >>> c.x # 调用 getx
    Traceback (most recent call last):
      File "<pyshell#34>", line 1, in <module>
        c.x
      File "<pyshell#28>", line 6, in getx
        return self._x
    AttributeError: 'C' object has no attribute '_x'

    classmethod():用来指定一个方法为类的方法,由类直接调用执行,只有一个cls参数,执行类的方法时,自动将调用该方法的类赋值给cls.没有此参数指定的类的方法为实例方法

    class Province:
         country = "中国"
           
         def __init__(self, name):
             self.name = name
           
         @classmethod
         def show(cls):  # 类方法,由类调用,最少要有一个参数cls,调用的时候这个参数不用传值,自动将类名赋值给cls
             print(cls)
           
    # 调用方法
    Province.show()

    staticmethod():标识方法为静态方法的装饰器。

    一般类中的方法必须要至少有一个参数,类直接调用的时候必须传进去一个类对象的参数:

    class A():
    def f1(self):
    print(11)
    A.f1(A())

    而加了@staticmethod装饰器的方法,不需要有参数,而且可以被类直接调用:

    class A():
    @staticmethod
    def f1():
    print(11)
    A.f1()


    参考:https://blog.csdn.net/yangxiaoyan12/article/details/87566833

    https://www.cnblogs.com/sesshoumaru/p/6140987.html#p2

    https://www.cnblogs.com/xiao1/p/5856890.html



  • 相关阅读:
    hdu-3001 三进制状态压缩+dp
    最长公共子序列(LCS)
    矩阵最优路线DP
    CF-721C DAG图拓扑排序+费用DP
    拓扑排序
    BFS+二进制状态压缩 hdu-1429
    DAG最长路问题 hdu-1224
    并查集-解决区间和纠错问题 hdu-3038
    hdu 4972 根据每轮篮球赛分差求结果
    hdu 1116 欧拉回路+并查集
  • 原文地址:https://www.cnblogs.com/wisir/p/12439257.html
Copyright © 2020-2023  润新知