Python - 内置函数

Posted 孔辉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 内置函数相关的知识,希望对你有一定的参考价值。

Python - 内置函数

filter

filter(处理逻辑, 可遍历对象)遍历序列中的每个元素,判断每个元素的布尔值为True则保留元素.

用法:返回执行结果为TRUE的入参(入参是列表字符元组)

print filter(lambda x:x*x-4,range(10))
	#结果:[0, 1, 3, 4, 5, 6, 7, 8, 9]

map

map(处理逻辑, 可遍历的对象) 处理序列中的每个元素, 元素个数及位置
与原来一样.

用法:对列表入参依次执行函数。入参为列表,有多少个列表,就应该有多少个入参。

print map(lambda x:x*x-4,range(10))
	#结果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]
	print map(lambda x,y:x*y-4,range(3),[8,9,10])
	#结果:[-4, 5, 16]

reduce

from funtools import reduce

reduce(函数, 序列, 默认空参数)处理一个序列, 然后把写进行合作操作

用法:先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给fuction,最终返回一个结果值

#接收的入参个数只能为2
	print reduce(lambda x,y:x*y-4,range(4))
	#结果:-40
	#计算0到100的和
	print reduce(lambda x,y:x+y, range(101))
	#结果:5050
	print reduce(lambda x,y:x+y, range(101),100)
	#结果:5150

sort(cmp=None, key=None, reverse=False) 和 sorted(iterable, cmp=None, key=None, reverse=False)

sort是容器的函数,sorted是Python的内建函数相同的参数。

简单解释一下两函数:

sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
sort是容器的函数,sorted是Python的内建函数相同的参数。
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项。cmp(e1, e2) 是带两个参数的比较函数, 返回值:
负数: e1 < e2,
0: e1 == e2,
正数: e1 > e2。
默认为 None, 即用内建的比较函数。
key:用列表元素的某个已命名的属性或函数(只有一个参数并且返回一个用于排序的值)作为关键字,有默认值,迭代集合中的一项。
reverse:排序规则,reverse = True 或者 reverse = False,有默认值。
  1. 对于一个无序的列表a,调用a.sort(),对a进行排序后返回a。
    而对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。

     >>> a=[1,3,5,2,9,4,7,8,6,0]
     >>> a.sort()
     >>> a
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     >>> a=[1,3,5,2,9,4,7,8,6,0]
     >>> sorted(a)
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     >>> a
     [1, 3, 5, 2, 9, 4, 7, 8, 6, 0]
    

复杂点的

		>>> list1=[(6,\'cangjingkong\',20),(4,\'wutenglan\',30),(7,\'boduoyejiyi\',25)]
		>>> list1.sort()
		>>> list1
		[(4, \'wutenglan\', 30), (6, \'cangjingkong\', 20), (7, \'boduoyejiyi\', 25)]
		>>> list1=[(6,\'cangjingkong\',20),(4,\'wutenglan\',30),(7,\'boduoyejiyi\',25)]
		>>> sorted(list1)
		[(4, \'wutenglan\', 30), (6, \'cangjingkong\', 20), (7, \'boduoyejiyi\', 25)]
		>>> list1
		[(6, \'cangjingkong\', 20), (4, \'wutenglan\', 30), (7, \'boduoyejiyi\', 25)]

当list由tuple组成时,默认情况下,sort和sorted都会根据tuplp[0]作为排序的key进行排序

  1. 基于key函数排序:

     >>> list1=[(6,\'cangjingkong\',20),(4,\'wutenglan\',30),(7,\'boduoyejiyi\',25)]
     >>> list1.sort(key=lambda employee : employee[2])
     >>> list1
     [(6, \'cangjingkong\', 20), (7, \'boduoyejiyi\', 25), (4, \'wutenglan\', 30)]
     >>> list1=[(6,\'cangjingkong\',20),(4,\'wutenglan\',30),(7,\'boduoyejiyi\',25)]
     >>> sorted(list1,key=lambda employee : employee[2])
     [(6, \'cangjingkong\', 20), (7, \'boduoyejiyi\', 25), (4, \'wutenglan\', 30)]
     >>> list1
     [(6, \'cangjingkong\', 20), (4, \'wutenglan\', 30), (7, \'boduoyejiyi\', 25)]
    
  2. 基于cmp函数排序:

     >>> list1=[(6,\'cangjingkong\',20),(4,\'wutenglan\',30),(7,\'boduoyejiyi\',25)]
     >>> list1.sort(cmp=lambda x,y : cmp(x[1],y[1]))
     >>> list1
     [(7, \'boduoyejiyi\', 25), (6, \'cangjingkong\', 20), (4, \'wutenglan\', 30)]
     >>> list1=[(6,\'cangjingkong\',20),(4,\'wutenglan\',30),(7,\'boduoyejiyi\',25)]
     >>> sorted(list1,cmp=lambda x,y : cmp(x[1],y[1]))
     [(7, \'boduoyejiyi\', 25), (6, \'cangjingkong\', 20), (4, \'wutenglan\', 30)]
     >>> list1
     [(6, \'cangjingkong\', 20), (4, \'wutenglan\', 30), (7, \'boduoyejiyi\', 25)]
    

3.基于升序/降序排序:

>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.sort(reverse=Ture)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name \'Ture\' is not defined
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=True)
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> sorted(a,reverse=False)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> sorted(a,reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a
[1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

常用内置函数总结

一. 数学运算类型

abs(x)

求绝对值
1. 参数可以是整型, 也可以是复数
2. 若参数是复数, 则返回复数的模

complex([real[,imag]])

创建一个复数

divmod(a,b)

分别取商和余数
注意: 整型, 浮点型都可以

float([x])

将一个字符串或数转换为浮点数,如果五参数将返回0.0

int([x[,base]])

将一个字符转换为int类型,base表示进制

long([x[,base]])

将一个字符串转换为long类型

pow(x,y[,z])

返回x的一次幂

range([start],stop[,step])

产生一个序列, 默认从0开始

round(x[,n])

四舍五入

sum(iterable[,start])

对集合求和

oct(x)

将一个数字转化为8进制

hex(x)

将整数x转化为16进制字符串

chr(i)

返回整数i对应的ASCII字符

bin(x)

将整数转化为二进制字符串

bool([x])

将x转化为Boolean类型

二. 集合类操作

basestring()

str和unicode的超类
不能直接调用, 可以用作isinstance判断

format(value[,format_spec])

格式化输出字符串
格式化的参数顺序从0开始,如"I am {0},I like {1}"

unichr(i)

返回给定int类型的unicode

enumerate(sequence [, start = 0])

返回一个可枚举的对象,该对象的next()方法将返回一个tuple

>>>seasons = [\'Spring\', \'Summer\', \'Fall\', \'Winter\']
>>> list(enumerate(seasons))
[(0, \'Spring\'), (1, \'Summer\'), (2, \'Fall\'), (3, \'Winter\')]
>>> list(enumerate(seasons, start=1))       # 下标从 1 开始
[(1, \'Spring\'), (2, \'Summer\'), (3, \'Fall\'), (4, \'Winter\')]

iter(0[,sentinel])

生成一个对象的迭代器,第二个参数表示分隔符

	s = \'软件是深圳的未来\'   #s是一个iterable对象,它有__getitem__()方法

it = iter(s)             #it是一个iterator对象,它有 __next__()和__iter__()方法

print(s)
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
结果输出如下:

软件是深圳的未来

软

件

是

深

**max(iterable[, args...][key]) **

返回集合中的最大值

min(iterable[, args...][key])

返回集合中的最小值

dict([arg])

创建数据字典

**list([iterable]) **

将一个集合类转换为另外一个集合类

set()

返回新的集合对象。

>>>x = set(\'runoob\')
>>> y = set(\'google\')
>>> x, y
(set([\'b\', \'r\', \'u\', \'o\', \'n\']), set([\'e\', \'o\', \'g\', \'l\']))   # 重复的被删除
>>> x & y         # 交集
set([\'o\'])
>>> x | y         # 并集
set([\'b\', \'e\', \'g\', \'l\', \'o\', \'n\', \'r\', \'u\'])
>>> x - y         # 差集
set([\'r\', \'b\', \'u\', \'n\'])
>>>

frozenset([iterable])

产生一个不可变的set

**str([object]) **

转换为string类型

**tuple([iterable]) **

生成一个tuple类型

**xrange([start], stop[, step]) **

xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能为我们节省内存

三. 逻辑判断

all(iterable)

1、集合中的元素都为真的时候为真
2、特别的,若为空串返回为True

any(iterable)

1、集合中的元素有一个为真的时候为真
2、特别的,若为空串返回为False

cmp(x, y)

如果x < y ,返回负数;x == y, 返回0;x > y,返回正数

四. 反射

callable(object)

检查对象object是否可调用
1、类是可以被调用的
2、实例是不可以被调用的,除非类中声明了__call__方法

classmethod()

1、注解,用来说明这个方式是个类方法
2、类方法即可被类调用,也可以被实例调用
3、类方法类似于Java中的static方法
4、类方法中不需要有self参数

compile(source, filename,mode[, flags[, dont_inherit]])

将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。
1、参数source:字符串或者AST(Abstract Syntax Trees)对象。
2、参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
3、参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。
4、参数flag和dont_inherit:这两个参数暂不介绍

dir([object])

1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;
2、带参数时,返回参数的属性、方法列表。
3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。
4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息

delattr(object, name)

删除object对象名为name的属性

eval(expression [, globals [, locals]])

计算表达式expression的值

execfile(filename [, globals [, locals]])

用法类似exec(),不同的是execfile的参数filename为文件名,而exec的参数为字符串.

getattr(object, name [, defalut])

获取一个类的属性

globals()

返回一个描述当前全局符号表的字典

hasattr(object, name)

判断对象object是否包含名为name的特性

hash(object)

如果对象object为哈希表类型,返回对象object的哈希值

isinstance(object, classinfo)

判断object是否是class的实例

issubclass(class, classinfo)

判断是否是子类

**len(s) **

返回集合长度

**locals() **

返回当前的变量列表699

**memoryview(obj) **

返回一个内存镜像类型的对象

**next(iterator[, default]) **

类似于iterator.next()

**object() **

基类

**property([fget[, fset[, fdel[, doc]]]]) **

属性访问的包装类,设置后可以通过c.x=value等来访问setter和getter

**reload(module) **

重新加载模块

setattr(object, name, value)

设置属性值

**repr(object) **

将一个对象变幻为可打印的格式

slice(start,end)

方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素。

staticmethod

声明静态方法,是个注解

**super(type[, object-or-type]) **

引用父类

type(object)

返回该object的类型

**vars([object]) **

返回对象的变量,若无参数与dict()方法类似

bytearray([source [, encoding [, errors]]])

返回一个byte数组
1、如果source为整数,则返回一个长度为source的初始化数组;
2、如果source为字符串,则按照指定的encoding将字符串转换为字节序列;
3、如果source为可迭代类型,则元素必须为[0 ,255]中的整数;
4、如果source为与buffer接口一致的对象,则此对象也可以被用于初始化bytearray.

**zip([iterable, ...]) **

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
 
>>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>

五. IO操作

file(filename [, mode [, bufsize]])

file类型的构造函数,作用为打开一个文件,如果文件不存在且mode为写或追加时,文件将被创建。添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到mode参数中,将允许对文件同时进行读写操作
1、参数filename:文件名称。
2、参数mode:\'r\'(读)、\'w\'(写)、\'a\'(追加)。
3、参数bufsize:如果为0表示不进行缓冲,如果为1表示进行行缓冲,如果是一个大于1的数表示缓冲区的大小 。

**input([prompt]) **

获取用户输入
推荐使用raw_input,因为该函数将不会捕获用户的错误输入

**open(name[, mode[, buffering]]) **

打开文件

与file有什么不同?推荐使用open

print

打印函数

**raw_input([prompt]) **

设置输入,输入都是作为字符串处理

其他

help()--帮助信息

以上是关于Python - 内置函数的主要内容,如果未能解决你的问题,请参考以下文章

python有多少内置函数

VBS 环境下如何调用EXCEL内置函数

查找内置 Python 函数的源代码?

python 内置函数

熟练掌握Python的内置函数,加快编程速度

python--内置函数, 匿名函数