19 内置函数、zip()、max()、min()

一、python内置函数

abs()

求绝对值

例子

1
print ( abs - 2 ))

  

 

all()

把序列中每一个元素做布尔运算,如果全部都是true,就返回true,

但是如果是空字符串、空列表也返回true

例子

1
print ( all ([ 1 , 2 , '1' ,'']))

  

输出结果

1
False

  

 

例子2

1
print ( all (''))

  

输出结果

1
True

  

 

any()

把序列中每一个元素做布尔运算,如果有一个为true就返回true,

但是有两个false还是false

 

例子

  
1
2
print ( any ([ 0 ,'']))
print ( any ([ 0 ,'', 1 ]))

  

输出结果

1
2
False
True

  

 

bin()

把十进制转换为二进制

例子

  
1
print ( bin ( 3 ))

  

输出结果

1
0b11

  

分析:其中“0b"代表二进制

 

bool()

判断布尔类型的,返回True或者False

 

bytes()

以一个字节的形式输出数据,这里的bytes是不可变数据类型

如果是整数,就输出长度为该整数长度的字节组

例子

  
1
2
3
print (bytes( 0 ))
print (bytes( 2 ))
print (bytes( 5 ))

  

输出结果

1
b' 'b' \x00\x00 'b' \x00\x00\x00\x00\x00'

  

如果是字符串,则必须制定编码方式进行编码

例子

 
1
2
3
name = '你好'
print (bytes(name,encoding = 'utf-8' ))
print (bytes(name,encoding = 'utf-8' ).decode( 'utf-8' ))

  

输出结果

1
b '\xe4\xbd\xa0\xe5\xa5\xbd' <br>你好

  

分析:这里的第一行输出就是以utf-8的方式对“你好”进行编码,是二进制模式下的十六进制编码,这里是十六进制的形式,utf-8中三个字节代表一个汉字,所以前3个字节代表的是“你”

第二行输出的是对十六进制的字节进行解码,用“utf-8”的形式重新解码,所以这里被还原成“你好”

 

例子

 
1
2
3
name = '你好'
print (bytes(name,encoding = 'gbk' ))
print (bytes(name,encoding = 'gbk' ).decode( 'gbk' ))

  

输出结果

1
2
b '\xc4\xe3\xba\xc3'
你好

  

 

分析:第一行输出是用"gbk"方式对“你好”进行编码,由于gbk是2个字符代表一个汉字,所以这里可以看到,前2个代表一个汉字,后2个代表一个汉字,

同样的这里也可以被解码重新还原为原字符串

 

bytearray()

以一个字节组的形式输出数据

用法与bytes()类似,但这里这个数组里的元素是可变的,bytes是不可变数据类型,而bytearray像名称一样可使用append等方法;

 

chr()

参数是(0~255)整数,返回的其实是ASCII码对应的字符

 

dict()

创建字典的函数

例子

  
1
print ( dict ( a  =  "1" ,b  =  "2"  ))

  

输出结果

1
{ 'a' '1' 'b' '2' }

  

分析:这种创建字典的方式key只能是字符串,不能是数字、布尔值等,创建出的字典key是写入等式的前面,等式后面写的是value

 

例子2

 
1
print ( dict ([( "a" , 1 ),( 2 , 3 )]))

  

输出结果

1
{ 'a' 1 2 3 }

  

 

分析:这里是用可迭代对象创造字典,即通过二元组列表创建

 

dir()

打印某一个对象下面都有哪些方法

例子

 
1
print ( dir ( str ))

  

输出结果

1
2
3
[ '__add__' '__class__' '__contains__' '__delattr__' '__dir__' '__doc__' '__eq__' '__format__' '__ge__' '__getattribute__' '__getitem__' '__getnewargs__' '__gt__' '__hash__' '__init__' '__init_subclass__' '__iter__' '__le__' '__len__' '__lt__' '__mod__' '__mul__' '__ne__' '__new__' '__reduce__' '__reduce_ex__' '__repr__' '__rmod__' '__rmul__' '__setattr__' '__sizeof__' '__str__' '__subclasshook__' 'capitalize' 'casefold' 'center' 'count' 'encode' 'endswith' 'expandtabs' 'find' 'format' 'format_map' 'index' 'isalnum' 'isalpha' 'isdecimal' 'isdigit' 'isidentifier' 'islower' 'isnumeric' 'isprintable' 'isspace' 'istitle' 'isupper' 'join' 'ljust' 'lower' 'lstrip' 'maketrans' 'partition' 'replace' 'rfind' 'rindex' 'rjust' 'rpartition' 'rsplit' 'rstrip' 'split' 'splitlines' 'startswith' 'strip' 'swapcase' 'title' 'translate' 'upper' 'zfill' ]

  

divmod()

实现a除以b,然后返回商与余数的元组。如果两个参数a,b都是整数,那么会采用整数除法,结果相当于(a//b, a % b)。如果a或b是浮点数,相当于(math.floor(a/b), a%b)。

 

例子

 
1
print ( divmod ( 10 , 3 ))

  

输出结果

1
( 3 1 )

  

 

enumerate()

将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

语法

  
enumerate(seq, [start=0])

seq--一个序列或者可迭代对象,start 下标的开始位置

 

例子

 
1
2
3
li  =  [ "nicholas" , "jack" , "pony" ]
for  in  enumerate (li, 1 ):
     print (i)

  

输出结果

1
2
3
( 1 'nicholas' )
( 2 'jack' )
( 3 'pony' )

  

 

eval()

将字符串str当成有效的表达式来求值并返回计算结果。

例子

 
1
2
#字符串转换成字典
print ( eval ( '{"nick":1,"jack":2}' ))

  

输出结果

1
{ 'nick' 1 'jack' 2 }

  

 

计算字符串里的表达式的值

例子

 
1
2
x,y  =  1 , 2
print ( eval ( 'x + y' ))

  

输出结果

3

 

hash()

用来做哈希运算的,只要可hash就是不可变数据类型

不可hash的就是可变数据类型

哈希是一种算法,把文件内容进行一个运算,最终得出一个值

得出的结果长度是固定的,不能根据结果反推原来的内容

本函数返回对象的哈希值。返回的哈希值是使用一个整数表示,通常使用软件校验。

 

例子

1
2
3
4
name  =  "nick"
print ( hash (name))
name  =  "nicholas"
print ( hash (name))

  


输出结果

1
5166927391536352230

  

分析:对name进行哈希运算返回一个值,如果中途被修改,哈希值也会变化

 

help()

查看帮助,查看某个函数怎么用

例子

 
1
print ( help ( dir ))

  

查看dir的用法

 

hex()、oct()、bin()

bin()将十进制转换为二进制

hex()将十进制转换为十六进制

oct()将十进制转换为八进制

 

isinstance()

 

函数来判断一个对象是否是一个已知的类型,类似 type()。

例子

  
1
2
print ( isinstance ( 1 , int ))
print ( isinstance ( "a" , str ))

  

输出

1
2
3
True
 
True

  

分析:判断1是不是int类型,判断“a”是不是字符串类型

 

locals()、globals()

这两个函数主要提供,基于字典的访问局部和全局变量的方式。

globals打印全局变量,还有一些系统提供的全局变量

locals打印局部变量

 

例子

 
1
2
3
{ 'b' 'nick ' }
- - - - - - - - - - - - - - - -
{ '__name__' '__main__' '__doc__' None '__package__' None '__loader__' : <_frozen_importlib_external.SourceFileLoader  object  at  0x002EA550 >,  '__spec__' None '__annotations__' : {},  '__builtins__' : <module  'builtins'  (built - in )>,  '__file__' 'D:/06python/exercise/test2.py' '__cached__' None 'a' 2 'test' : <function test at  0x02116CD8 >}

  

分析:这里print(locals())打印的是{'b': 'nick '},获取的是局部变量,

print(globals())在输出的最后获取了'a': 2,其他都是系统提供的全局变量

 

 

ord()

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值

 

pow()

pow(x,y)方法返回 xy(x的y次方) 的值。

pow(x,y,z)方法是x的y次方得到一个值,之后再用这个值对z进行取余

例子

  
1
2
print ( pow ( 2 , 5 , 3 ))
print ( pow ( 2 , 5 ))

  

输出结果

1
232

  

 

reversed()

reversed函数返回一个反转的迭代器。即取反,取反的对象可以是列表、字符串、元组,或者range

例子

  
1
2
print ( reversed ([ 1 , 2 , 3 , 4 ]))
print ( list ( reversed ([ 1 , 2 , 3 , 4 ])))

  

输出结果

1
<list_reverseiterator  object  at  0x002EA570 >[ 4 3 2 1 ]

  

分析:第一行输出,直接打印reversed输出的是一个反转的迭代器,要用list方法可以进行显示列表。

 

round()

返回浮点数x的四舍五入值。

 

set()

创建一个集合

 

 

slice()

切片对象,主要用在切片操作函数里的参数传递。

语法

slice(start, stop[, step])

例子

  
1
2
3
=  "hello world !"
s1  =  slice ( 0 , 4 )
print (l[s1])

  

输出结果

hell

例子2

  
1
2
3
=  "aeiou world !"
s2  =  slice ( 0 , 4 , 2 )
print (l[s2])

  

输出结果

1
 

  

分析:这里加了步长。

 

sorted()

对所有可迭代的对象进行排序操作。内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

list 的 sort 方法返回的是对已经存在的列表进行操作

 

sorted 方法不能针对不同类型进行排序

 

例子

 
1
2
=  [ 2 , 1 , 3 , 5 , 8 ]
print ( sorted (l))

  

输出结果

1
[ 1 2 3 5 8 ]

  

 

sorted()语法

  
sorted(iterable, key=None, reverse=False)  
  • iterable -- 可迭代对象。key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中

  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

    例子

     
      
    1
    2
    3
    4
    5
    6
    7
    people = [
           { 'name' : 'nicholas' , 'age' : 18 },
           { 'name' : 'jack' , 'age' : 53 },
           { 'name' : 'pony' , 'age' : 46 },
           { 'name' : 'richard' , 'age' : 44 },
       ]
    print ( sorted (people,key  =  lambda   dic:dic[ "age" ]))

      

输出结果

1
[{ 'name' 'nicholas' 'age' 18 }, { 'name' 'richard' 'age' 44 }, { 'name' 'pony' 'age' 46 }, { 'name' 'jack' 'age' 53 }]

  

 

str()

将任意类型转换为字符串

 

sum()

对系列进行求和计算。

语法

  
sum(iterable[, start])

例子

 
1
2
3
li  =  [ 1 , 2 , 3 , 4 , 5 ]
print ( sum (li))
print ( sum (li, 2 ))

  

输出结果

1
2
15
17

  

 

分析:第二行输出是先对列表求和,再加上参数2再次求和。

 

type()

查看某一对象的数据类型

例子

  
1
2
3
4
5
msg  =  "123"
if  type (msg)  is  str  :
     msg  =  int (msg)
     res  =  msg  +  5
     print (res)

  

 

 

 

vars()

对象object的属性和属性值的字典对象。

查看对象的属性和值,如果没有参数和locals功能一样。

如果有就显示该对象的所有方法名

 
1
print ( vars ( int ))

  

 

二、zip()

 

用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表或者字典。

zip()可以传2个参数,只要是序列就可以(列表、元组、字符串)

例子

1
2
3
4
print ( zip (( "a" , "b" , "c" ),( 1 , 2 , 3 )))
print ( list ( zip (( "a" , "b" , "c" ),( 1 , 2 , 3 ))))
print ( list ( zip (( "a" , "b" , "c" ),( 1 , 2 , 3 , 4 ))))
print ( list ( zip (( "a" , "b" , "c" , "d" ),( 1 , 2 , 3 ))))

  



输出结果

1
2
3
4
5
6
7
< zip  object  at  0x0216EB98 >
 
[( 'a' 1 ), ( 'b' 2 ), ( 'c' 3 )]
 
[( 'a' 1 ), ( 'b' 2 ), ( 'c' 3 )]
 
[( 'a' 1 ), ( 'b' 2 ), ( 'c' 3 )]

  

分析:第一行输出的是zip的对象,要转换为列表用list的方法

zip的左右两个参数序列是一一对应的关系,如果有多的自动忽略

例子2

1
2
p = { 'name' : 'nicholas' , 'age' : 18 , 'gender' : 'man' }
print ( list ( zip (p.keys(),p.values())))

  



输出结果

1
[( 'name' 'nicholas' ), ( 'age' 18 ), ( 'gender' 'man' )]

  

 

分析:这样就可以把字典中的元素提取出来

 

例子

1
print ( dict ( zip (( "a" , "b" , "c" ),( 1 , 2 , 3 ))))

  



输出结果

1
{ 'a' 1 'b' 2 'c' 3 }

  

分析:这里可以直接将zip对象转为字典。

 

三、max() 、min()

max()求最大的值

 

例子

1
2
3
4
dic  =  { "age1" : 18 , "age4" : 25 , "age2" : 19 , "age3" : 28 }
print ( max (dic))
print ( max (dic.values()))
print ( max ( zip (dic.values(),dic.keys())))

  



输出结果

1
2
3
age4
28
( 28 'age3' )

  

分析:print(max(dic))语句默认比较的是字典的key,进行字符串的比较,一个字符一个字符的比较,根据字符的ASCII码进行比较

第二行输出print(max(dic.values())),比较的是字典的value,直接输出最大的value

第三行输出是首先将字典用zip方法将字典的value和key组成一个一一对应的元组,然后直接比较这个元组的大小

具体

1
2
3
4
5
dic  =  { "age1" : 18 , "age4" : 25 , "age2" : 19 , "age3" : 28 }
=  zip (dic.values(),dic.keys())
#这里也是一个可迭代对象
for  in  v:
     print (i)

  



输出结果

1
2
3
4
( 18 'age1' )
( 25 'age4' )
( 19 'age2' )
( 28 'age3' )

  

这里通过for循环可以看出zip(dic.values(),dic.keys())是一个元组

 

例子2

1
2
=  [( 5 , "a" ),( 3 , "b" ),( 2 , "c" )]
print ( max (l))

  



输出结果

1
( 5 'a' )

  

分析:这里是从第一个值进行比较,5、3、2进行比较,如果有结果,后面的就不用比较了

 

例子3

1
2
=  [ "a18" , "b21" , "c5" ]
print ( max (l))

  



输出结果

1
 

  

分析:这里也是一个字符一个字符的比较。

 

max()的高级用法

max(iterable,key = func)

iterable--可迭代对象,func--对对象的元素处理逻辑

例子

1
2
3
4
5
6
7
people = [
     { 'name' : 'pony' , 'age' : 1000 },
     { 'name' : 'jack' , 'age' : 10000 },
     { 'name' : 'richard' , 'age' : 9000 },
     { 'name' : 'nick' , 'age' : 18 },
]
print ( max (people,key  =  lambda  x:x[ "age" ]))

  



输出结果

1
{ 'name' 'jack' 'age' 10000 }

  

分析:这里是对列表中每个元素进行for循环,即字典进行取出“age”对应的value进行比较,同时输出value最大值的元素,与map函数进行for循环类似。

x["age"]是对列表的每个元素进行索引,而非对列表进行索引,因为这个max()函数对要处理的可迭代对象进行了类似for循环处理。

 

 

 

 

min()函数与max()用法类似,max()求最大值,min()求最小值

猜你喜欢

转载自www.cnblogs.com/jeavy/p/9209925.html
19