一、内置函数列表
二、常见内置函数用法
由于python内置函数较多,在此总结一下部分常见的内置函数的用法:
- abs(x)
功能:取数的绝对值
1 >>> abs(0) 2 0 3 >>> abs(-5) 4 5 5 >>>
- all(interable)
功能:判断可迭代对象中的每个元素,如果均为真(非0)则返回true,反之返回false
1 >>> all([1,2,3]) 2 True 3 >>> all([0,1,2,3]) 4 False 5 >>>
- any(interable)
功能:也是判断可迭代对象中的每个元素,不同的是只要有一个元素为真就返回true,反之返回false
1 >>> any(['a','b','c']) 2 True 3 >>> any([]) #空列表为假 4 False 5 >>> any([0]) 6 False 7 >>> any([0,1]) 8 True 9 >>>
- bin(x)
功能:把整数转换成二进制
1 >>> bin(100) 2 '0b1100100' 3 >>> bin(1) 4 '0b1' 5 >>>
- bool(object)
功能:判断对象,返回布尔值,为空或0则返回false,反之返回true
1 >>> bool('x') 2 True 3 >>> bool('') 4 False 5 >>> bool(0) 6 False 7 >>>
- bytearray[source[, encoding[, errors]]]
功能:把二进制字节转换成可以修改的数组(列表)
1 >>> list1=bytearray('001',encoding='utf-8') 2 >>> list1 3 bytearray(b'001') 4 >>> list1[0] #以列表方式访问元素,返回的是对应的ASCII码 5 48 6 >>> list1[0]=99 #更新时也必须以ASCII码的形式来更新 7 >>> list1 8 bytearray(b'c01') #更新后原列表变了 9 >>>
- bytes([source[, encoding[, errors]]])
功能:把字符串转换成字节,但不能修改内容1 >>> b = bytes("abcd",encoding="utf-8") 2 >>> b 3 b'abcd' 4 >>> b[1] 5 98 6 >>> b[1]=99 7 Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9 TypeError: 'bytes' object does not support item assignment
- callable(object)
功能:判断一个对象是否可以被调用,目前所知道的只有函数或类才可以通过调用符号()去调用。1 >>> def func1(): 2 ... pass 3 ... 4 >>> callable(func1) 5 True 6 >>> a='test' 7 >>> callable(a) 8 False
- chr(x)
功能:把ASCII中的数字转换成对应的字符1 >>> chr(98) 2 'b'
- ord(x)
功能:获取一个字符对应的ASCII码1 >>> ord('c') 2 99
- dict(**kwarg)、dict(mapping, **kwarg)、dict(iterable, **kwarg)
功能:生成一个字典1 >>> dict 2 <class 'dict'> 3 >>> dict({('address','Chengdu'),('Num','028')}) #传入一个set 4 {'address': 'Chengdu', 'Num': '028'} 5 >>> dict([('address','Chengdu'),('Num','028')]) #传入list 6 {'address': 'Chengdu', 'Num': '028'} 7 >>> dict([['address','Chengdu'],['Num','028']]) 8 {'address': 'Chengdu', 'Num': '028'} 9 >>> dict((('address','Chengdu'),('Num','028'))) #传入元组 10 {'address': 'Chengdu', 'Num': '028'} 11 >>>
- dir(object)
功能:查看一个对象的方法1 >>> a=dict((('address','Chengdu'),('Num','028'))) 2 >>> dir(a) 3 ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__' 4 , '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', 5 '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', ' 6 __lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__seta 7 ttr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'co 8 py', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update 9 ', 'values']
- divmod(a,b)
功能:地板除,获得一个元组,元组第一个元素是商,第二个元素是余数。1 >>> divmod(9,2) 2 (4, 1)
- enumerate(iterable,start=0)
功能:遍历一个iterable中,逐个返回索引和相应的元素(一个enumerate对象),start参数可设置索引起始值,默认从0开始1 >>> test='abcd' 2 >>> for index,item in enumerate(test): 3 ... print(index,item) 4 ... 5 0 a 6 1 b 7 2 c 8 3 d 9 >>> print(list(enumerate(test))) 10 [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')] 11 >>> print(list(enumerate(test,start=2))) #start参数人为设定起始索引值,默认从0开始 12 [(2, 'a'), (3, 'b'), (4, 'c'), (5, 'd')] 13 >>> print(dict(enumerate(test))) 14 {0: 'a', 1: 'b', 2: 'c', 3: 'd'}
- eval(expression, globals=None, locals=None)
功能:进行简单的数学运算,对于符合其他特征不可计算的字符串,进行类型转换,比如可以把符合特征的字符串转换成int类型,list,tuple,dict等。1 >>> eval('100') 2 100 3 >>> type(eval('100')) 4 <class 'int'> 5 >>> eval("[1,2,3]") 6 [1, 2, 3] 7 >>> eval("(1,2,3)") 8 (1, 2, 3) 9 >>> eval("{1:'name',2:'male',3:'age'}") 10 {1: 'name', 2: 'male', 3: 'age'}
- filter(function, iterable)
功能:根据function定义的过滤条件,筛选出Iterable中符合条件的数据。1 >>> a=filter(lambda x:x %2 == 0, [0,1,2,3,4]) 2 >>> print(a) 3 <filter object at 0x0000000001E9BE48> #经filter处理后返回的是一个filter对象 4 >>> for i in a: 5 ... print(i) 6 ... 7 0 8 2 9 4
- map(function, iterable)
功能:接收参数function和可迭代对象iterable,对于每个迭代的元素一一进行函数运算,然后返回相应的结果(简单理解为一对一映射处理)1 >>> def func1(x): 2 ... return x * 2 3 ... 4 >>> rs=map(func1,range(5)) 5 >>> for i in rs: 6 ... print(i) 7 ... 8 0 9 2 10 4 11 6 12 8 13 >>> rs 14 <map object at 0x00000000021DBE10>
- reduce(function,iterable,initializer)
功能:将一个带有两个参数的方法累计应用到一个可迭代的对象的元素上(function必须接收两个参数,遍历可迭代对象的元素,把上一次计算的结果作为下一次计算的第一个参数),以便把可迭代对象规约为一个单一的值,即大数据中的reduce规约计算。其中第三个参数初始值是可选的,如果给出了初始值,则把初始值作为第一个计算的第一个参数。计算过程如下:1 >>> def f(x,y): 2 ... return x+y 3 ... 4 >>> reduce(f,[1,3,5,7,9]) 5 Traceback (most recent call last): 6 File "<stdin>", line 1, in <module> 7 NameError: name 'reduce' is not defined 8 >>> from functools import reduce #注意这里需要先导入后才能使用 9 >>> reduce(f,[1,3,5,7,9]) 10 25 11 >>> reduce(f,[1,3,5,7,9],100) #给出初始值100 12 125
- float
功能:把一个数字形式的字符串转换为浮点类型的数据。1 >>> float('a') 2 Traceback (most recent call last): 3 File "<stdin>", line 1, in <module> 4 ValueError: could not convert string to float: 'a' #a不是数字形式,无法转换 5 >>> 6 >>> float('1') 7 1.0 8 >>> float('1.23') 9 1.23
- fronzenset(interable)
功能:把一个可迭代对象转换为一个不可变的集合(双重特性,首先是符合集合的特性,其次是不可变)1 >>> res=frozenset([1,1,2,2,3]) 2 >>> res 3 frozenset({1, 2, 3}) #集合中的元素不可重复,符合集合特征 4 >>> res.add(4) #不能针对该集合增加元素,不可变 5 Traceback (most recent call last): 6 File "<stdin>", line 1, in <module> 7 AttributeError: 'frozenset' object has no attribute 'add' 8 >>> dir(res) #没有可变方法 9 ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '_ 10 _eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__ini 11 t__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', 12 '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__r 13 or__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__' 14 , '__subclasshook__', '__xor__', 'copy', 'difference', 'intersection', 'isdisjoi 15 nt', 'issubset', 'issuperset', 'symmetric_difference', 'union'] 16 >>>
- globals()
功能:返回程序中所有的变量键值对(key 变量名, value 变量值,全局变量)1 >>> def foo(x): 2 ... global a 3 ... a=10 4 ... b=20 5 ... print(globals()) 6 ... 7 >>> foo() 8 Traceback (most recent call last): 9 File "<stdin>", line 1, in <module> 10 TypeError: foo() missing 1 required positional argument: 'x' 11 >>> foo(1) 12 {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <cl 13 ass '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': { 14 }, '__builtins__': <module 'builtins' (built-in)>, 'f': <function f at 0x0000000 15 001D23E18>, 'reduce': <built-in function reduce>, 'res': frozenset({1, 2, 3}), ' 16 test': <function test at 0x00000000023DAEA0>, 'foo': <function foo at 0x00000000 17 02543840>, 'a': 10} #定义的全局变量已经获取打印到 18 19 >>> def foo2(): 20 ... global a 21 ... a=100 22 ... print(globals().get('a')) #直接获取全局变量的值 23 ... 24 >>> foo2() 25 100
- locals()
功能:与globals()类似,但返回的是局部变量1 >>> def foo(x): 2 ... a='hehe' 3 ... print(locals()) 4 ... 5 >>> foo(1) 6 {'a': 'hehe', 'x': 1} 7 >>>
- hash()
功能:根据一定的算法生成固定的映射结果,相同的输入生成相同的输出这里需要注意的是它的应用场景hash函数把复杂的key(如中文)转换为固定的值存储,以便后续的复杂处理(查找,更新等),因为处理映射后的value更容易1 >>> hash('xy') 2 6325275833896794579 3 >>> hash('xy') 4 6325275833896794579 5 >>> hash('100') 6 -93280025000303673 7 >>> hash(100) 8 100 9 >>>
- max(iterable)
功能:返回一个可迭代对象的最大值1 >>> max((1,2,3)) 2 3 3 >>> max({1,2,6}) 4 6
- min(interable)
功能:返回一个可迭代对象的最小值1 >>> max((1,2,3)) 2 3 3 >>> max({1,2,6}) 4 6
- input()
功能:输入字符串1 >>> input(':') 2 :hehe 3 'hehe'
- list()
功能:把其他的序列转换成列表1 >>> list({1,2,3}) 2 [1, 2, 3]
- set()
功能:把其他的序列(可迭代对象)转换成集合1 >>> set({1:'a',2:'b'}) 2 {1, 2} 3 >>> set(range(5)) 4 {0, 1, 2, 3, 4}
- hex()
功能:转换十六进制1 >>> hex(16) 2 '0x10' 3 >>>
- oct()
功能:转换八进制1 >>> oct(8) 2 '0o10' 3 >>> oct(7) 4 '0o7'
- sorted(iterable[, key][, reverse])
功能:对一个序列进行排序1 >>> a={1:'a',2:'c',3:'b'} 2 >>> sorted(a) #默认只是排序key 3 [1, 2, 3] 4 >>> sorted(a.items()) #a.items返回的是包含键值对元组的列表,这里还是按key排序 5 [(1, 'a'), (2, 'c'), (3, 'b')] 6 >>> sorted(a.items(),key=lambda x:x[1]) #指定键值对中的value作为排序的key,因此按value来排序 7 [(1, 'a'), (3, 'b'), (2, 'c')] 8 >>> print(a.items()) 9 dict_items([(1, 'a'), (2, 'c'), (3, 'b')])
- zip(*iterables)
功能:组合两个对象(zip中文拉链的意思),一一对应起来(如果有一个序列的个数更少,则按少的那个来)。1 >>> a=[1,2,3] 2 >>> b={'a','b'} 3 >>> for i in zip(a,b): 4 ... print(i) 5 ... 6 (1, 'a') 7 (2, 'b') 8 >>>
- __import__(name, globals=None, locals=None, fromlist=(), level=0)
功能:当导入的模块是一个字符串时,用__import__()1 >>> import os 2 >>> __import__('os') 3 <module 'os' from 'C:\Program Files (x86)\python3.6.1\lib\os.py'>
先计算头两个元素:f(1, 3),结果为4;
再把结果和第3个元素计算:f(4, 5),结果为9;
再把结果和第4个元素计算:f(9, 7),结果为16;
再把结果和第5个元素计算:f(16, 9),结果为25;
由于没有更多的元素了,计算结束,返回结果25。
典型的应用场景是:凡是要对一个可迭代独享进行操作的,并且要有一个统计结果的,能够用循环或者递归方式解决的问题,一般情况下都可以用reduce方式实现(比如统计一个集合中key重复的次数)。