Python学习进程(15)常用内置函数

时间:2023-01-12 14:49:04

    本节介绍Python的一些常用的内置函数。

    (1)cmp(x, y):

cmp()函数比较 x 和 y 两个对象,并根据比较结果返回一个整数,如果 x<y,则返回-1;如果x>y,则返回 1,如果 x==y 则返回 0。

>>> cmp(str1,str2)
-1
>>> num1=10;num2=20;
>>> cmp(num1,num2)
-1
>>> list1=["abc","MenAngel",True]
>>> list2=["abc","MenAngel",False]
>>> cmp(list1,list2)
1

在Python2.7x版本中cmp比较函数不够严谨,他可以进行除复数外任意类型的比较,但在Python3.5x版本中仅限同一类型的比较。

    (2)len(object) -> integer:

len()函数返回字符串或者序列的长度。

>>> str="人生何不潇洒走一回"
>>> len(str)
18
>>> list_test=["山川","驻美","美貌",True,80]
>>> len(list_test)
5
>>> tuple_test=("Hello","World",8j,False,5/4)
>>> len(tuple_test)
5

    (3)range([lower,]stop[,step]):

range()函数可按参数生成连续的有序整数列表。

>>> num_list1=range(10)
>>> print num_list1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> num_list2=range(5,10)
>>> print num_list2
[5, 6, 7, 8, 9]
>>> num_list3=range(5,15,3)
>>> print num_list3
[5, 8, 11, 14]
>>> num_list4=range(20,10,-2)
>>> print num_list4
[20, 18, 16, 14, 12]

    (4)xrange([lower,]stop[,step]):    

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

>>> xrange(10)
xrange(10)
>>> xrange(11,22,2)
xrange(11, 23, 2)
>>> list(xrange(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(xrange(11,22,2))
[11, 13, 15, 17, 19, 21]

    (5)float(x):

float()函数把一个数字或字符串转换成浮点数。

>>> float("123.4")
123.4
>>> float("")
5.0
>>> float(5)
5.0

    (6)hex(x):

hex()函数可把整数转换成十六进制数。

>>> hex(50)
'0x32'
>>> hex(32)
'0x20'

    (7)list(x)或tuple(x):

list()函数可将序列对象转换成列表。tuple()函数可将列表转化为序列。

>>> list('MenAngel')
['M', 'e', 'n', 'A', 'n', 'g', 'e', 'l']
>>> list(("Men","Women",True,80))
['Men', 'Women', True, 80]
>>> tuple(xrange(10,20,2))
(10, 12, 14, 16, 18)
>>> tuple(list(xrange(20,10,-5)))
(20, 15)

    (8)int(x[,base]):

int()函数把数字和字符串转换成一个整数,base 为可选的基数。

>>> int(123.4)
123
>>> int("")
123

    (9)min(x[,y,z...])或max(x[,y,z...]):

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

>>> tuple_test1=(1,2,3,4,5)
>>> list_test1=[1,2,3,4,5]
>>> tuple_test2=(2,3,4,5,6)
>>> min(tuple_test1);max(list_test1)
1
5
>>> min(tuple_test1,tuple_test2)
(1, 2, 3, 4, 5)

    (10)zip(seq[,seq,...]):

zip()函数可把两个或多个序列中的相应项合并在一起,并以元组的格式返回它们,在处理完最短序列中的所有项后就停止。

>>> list1=[1,2,3]
>>> list2=[4,5,6]
>>> list3=[7,8,9]
>>> zip(list1,list2,list3)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list4=[10,11,12,13]
>>> zip(list1,list4)
[(1, 10), (2, 11), (3, 12)]
>>> zip(list4)
[(10,), (11,), (12,), (13,)]
>>> zip()
[]
>>> zip(*zip(list1,list2,list3))
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> x = [1, 2, 3]
>>> zip(* [x] * 3)
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
>>> [x]*3
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

    (11)replace(string,old,new[,maxsplit]):

字符串的替换函数,把字符串中的 old 替换成 new。默认是把 string 中所有的 old 值替换成 new值,如果给出 maxsplit 值,还可控制替换的个数,如果 maxsplit 为 1,则只替换第一个 old 值。

>>> str
'MenAnge123sunjimeng,sunjimeng123MenAngel,He123My friend'
>>> str.replace('','is')
'MenAngeissunjimeng,sunjimengisMenAngel,HeisMy friend'
>>> str.replace('','is',2)
'MenAngeissunjimeng,sunjimengisMenAngel,He123My friend'
>>> str.replace('','is',3)
'MenAngeissunjimeng,sunjimengisMenAngel,HeisMy friend'

    (12)split(string,sep=None,maxsplit=-1):

从 string 字符串中返回一个列表,以 sep 的值为分界符。

>>> str="www.blog.com/MenAngel/Index"
>>> str.split('.')
['www', 'blog', 'com/MenAngel/Index']
>>> str.split('/')
['www.blog.com', 'MenAngel', 'Index']
>>> str.split('/',1)
['www.blog.com', 'MenAngel/Index']
>>> string="win10&&win9&&win7"
>>> string.split('&&')
['win10', 'win9', 'win7']

    (13)abs(x):

abs()返回一个数字的绝对值。如果给出复数,返回值就是该复数的模。

>>> abs(-10)
10
>>> abs(-3j+4)
5.0

    (14)callable(object):

callable()函数用于测试对象是否可调用,如果可以则返回1(真);否则返回0(假)。可调用对象包括函数、方法、代码对象、类和已经定义了“调用”方法的类实例。

>>> callable(str)
True
>>> def sum(var1,var2):
... return var1+var2
... >>> callable(sum)
True
>>> name="MenAngel"
>>> callable(name)
False
>>> callable(xrange(10))
False
>>> callable(range(10))
False

    (15)divmod(x,y):

divmod(x,y)函数完成除法运算,返回商和余数。

>>> divmod(10,3)
(3, 1)
>>> divmod(4+8j,2)
((2+0j), 8j)

    (16)isinstance(object,class-or-type-or-tuple) -> bool:

测试对象类型

>>> name="MenAngel"
>>> isinstance(name,str)
True
>>> num=100
>>> isinstance(num,int)
True
>>> isinstance(num,float)
False
>>> isinstance(True,bool)
True

    (17)pow(x,y[,z]):

pow()函数返回以x为底,y为指数的幂。如果给出z值,该函数就计算x的y次幂值被z取模的值。

>>> pow(2,3)
8
>>> pow(4,4,5)
1
>>>

    (18)round(x[,n]):

round()函数返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

>>> round(12.345)
12.0
>>> round(12.345678,2)
12.35

    (19)type(obj):

type()函数可返回对象的数据类型。

>>> type("MenAngel")
<type 'str'>
>>> type(True)
<type 'bool'>
>>> type(40)
<type 'int'>
>>> type(6/4)
<type 'int'>
>>> type(12.5)
<type 'float'>
>>> type(6.0/4)
<type 'float'>
>>> type(9j)
<type 'complex'>
>>> type(["sg","sb",True])
<type 'list'>
>>> type(("a",True))
<type 'tuple'>
>>> type({"a":"MenAngel","":""})
<type 'dict'>

    (20)chr(i):

chr()函数返回ASCII码对应的字符串。

>>> chr(53)
''
>>> chr(56)
''
>>> chr(106)
'j'

    (21)oct(x):

oct()函数可把给出的整数转换成八进制数。

>>> oct(10)
''
>>> oct(64)
''

    (22)ord(x):

ord()函数返回一个字符串参数的ASCII码或Unicode值。

>>> ord('z')-ord('a')
25
>>> ord(u'?')
63
>>> ord(u'')
57

    (23)filter(function,list):

调用filter()时,它会把一个函数应用于序列中的每个项,并返回该函数返回真值时的所有项,从而过滤掉返回假值的所有项。

>>> def noMen(str):
... return str.find("Men")==-1
...
>>> s=["I am Men","I am WoMen","Hello","World"]
>>> filter(noMen,s)
['Hello', 'World']

    (24)map(function,list[,list]):

map()函数把一个函数应用于序列中所有项,并返回一个列表。

>>> import string
>>> s="www.hello.com"
>>> map(string.capitalize,s.split('.'))
['Www', 'Hello', 'Com']
>>> import operator
>>> s=[1,2,3];t=[4,5,6]; #同时应用于多个列表
>>> map(operator.mul,s,t)
[4, 10, 18]
>>> a=[1,2];b=[3,4];c=[5,6];
>>> map(None,a,b,c) #如果传递一个None值,而不是一个函数,则map()会把每个序列中的相应元素合并起来,并返回该元组。
[(1, 3, 5), (2, 4, 6)]
>>> zip(a,b,c)
[(1, 3, 5), (2, 4, 6)]

    (25)reduce(function,seq[,init]):

reduce()函数获得序列中前两个项,并把它传递给提供的函数,获得结果后再取序列中的下一项,连同结果再传递给函数,以此类推,直到处理完所有项为止。

>>> import operator
>>> a=[1,2,3,4];b=[5,6,7,8];
>>> map(operator.add,a,b)
[6, 8, 10, 12]
>>> reduce(operator.add,a)
10