python 内置函数

内置函数

函数就是以功能为导向,一个函数封装一个功能,那么Python将一些常用的功能(比如len)给我们封装成了一个一个的函数,供我们使用,他们不仅效率高(底层都是用C语言写的),而且是拿来即用,避免重复早轮子,那么这些函数就称为内置函数

  到目前为止python给我们提供的内置函数一共是68个

 

重点的

abs() enumerate() filter()  map() max()  min() open() 
range() print()  len()  list()  dict() str()  float() reversed() 
set()  sorted()  sum()    tuple()  type()  zip()  dir() 

 

普通的

all()  any()  bytes() callable() chr() complex() divmod() eval()
exec() format() frozenset() globals() hash() help() id() 
input() int()  iter() locals() next()  oct()  ord()  pow()  
repr()  round()

classmethod()  delattr() getattr() hasattr()  issubclass() 
isinstance()  object() property()  setattr()  staticmethod() 
super()

 

 

内置函数Ⅰ

eval:执行字符串类型的代码,并返回最终结果。

eval('2 + 2')  # 4
n=81
eval("n + 4")  # 85
eval('print(666)')  # 666

exec:执行字符串类型的代码。

s = '''
for i in [1,2,3]:
    print(i)
'''
exec(s)

hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。

复制代码
print(hash(12322))
print(hash('123'))
print(hash('arg'))
print(hash('alex'))
print(hash(True))
print(hash(False))
print(hash((1,2,3)))

'''
-2996001552409009098
-4637515981888139739
1
2528502973977326415
'''
复制代码

help:函数用于查看函数或模块用途的详细说明。

print(help(list))
print(help(str.split))

callable:函数用于检查一个对象是否是可调用的。

如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

name = 'alex'
def func():
    pass
print(callable(name))  # False
print(callable(func))  # True

int:函数用于将一个字符串或数字转换为整型。

print(int())  # 0
print(int('12'))  # 12
print(int(3.6))  # 3
print(int('0100',base=2))  # 将2进制的 0100 转化成十进制。结果为 4

float:函数用于将整数和字符串转换成浮点数。

complex:复数或者转化一个字符串或数为复数

函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。

print(float(3))  # 3.0
print(complex(1,2))  # (1+2j)

bin:将十进制转换成二进制并返回。

oct:将十进制转化成八进制字符串并返回。

hex:将十进制转化成十六进制字符串并返回。

print(bin(10),type(bin(10)))  # 0b1010 <class 'str'>
print(oct(10),type(oct(10)))  # 0o12 <class 'str'>
print(hex(10),type(hex(10)))  # 0xa <class 'str'>

divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。

round:保留浮点数的小数位数,默认保留整数。

pow:求x**y次幂。(三个参数为x**y的结果对z取余)

复制代码
print(divmod(7,2))  # (3, 1)
print(round(7/3,2))  # 2.33
print(round(7/3))  # 2
print(round(3.32567,3))  # 3.326
print(pow(2,3))  # 两个参数为2**3次幂
print(pow(2,3,3))  # 三个参数为2**3次幂,对3取余。
复制代码

bytes:用于不同编码之间的转化。

复制代码
# s = '你好'
# bs = s.encode('utf-8')
# print(bs)
# s1 = bs.decode('utf-8')
# print(s1)
# bs = bytes(s,encoding='utf-8')
# print(bs)
# b = '你好'.encode('gbk')
# b1 = b.decode('gbk')
# print(b1.encode('utf-8'))
复制代码

ord:输入字符找该字符编码的位置

chr:输入位置数字找出其对应的字符

复制代码
# ord 输入字符找该字符编码的位置
# print(ord('a'))
# print(ord('中'))

# chr 输入位置数字找出其对应的字符
# print(chr(97))
# print(chr(20013))
复制代码

repr:返回一个对象的string形式(原形毕露)。

复制代码
# %r  原封不动的写出来
# name = 'taibai'
# print('我叫%r'%name)

# repr 原形毕露
print(repr('{"name":"alex"}'))
print('{"name":"alex"}')
复制代码

all:可迭代对象中,全都是True才是True

any:可迭代对象中,有一个True 就是True

# all  可迭代对象中,全都是True才是True
# any  可迭代对象中,有一个True 就是True
# print(all([1,2,True,0]))
# print(any([1,'',0]))
 

 

 

内置函数Ⅱ(重点)

超重点

abs() enumerate() filter() map() max() min()
open() range() print() len() list() dict() str()
reversed() set() sorted() sum() tuple() 
type() zip() dir()

 

 

 

int():pass

str():pass

bool():pass

set(): pass

list() 将一个可迭代对象转换成列表

tuple() 将一个可迭代对象转换成元组

dict() 通过相应的方式创建字典。

 

例子

list
l1 = list('abcd')
print(l1)  # ['a', 'b', 'c', 'd']
tu1 = tuple('abcd')
print(tu1)  # ('a', 'b', 'c', 'd')

 

abs()返回绝对值

i = -5
print(abs(i))  # 5
View Code

 

sum() 求和

print(sum([1,2,3]))
print(sum((1,2,3),100))
View Code

 

min() 求最小值

print(min([1,2,3]))  # 返回此序列最小值
​
ret = min([1,2,-5,],key=abs)  # 按照绝对值的大小,返回此序列最小值
print(ret)
# 加key是可以加函数名,min自动会获取传入函数中的参数的每个元素,然后通过你设定的返回值比较大小,返回最小的传入的那个参数。
print(min(1,2,-5,6,-3,key=lambda x:abs(x)))  # 可以设置很多参数比较大小
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))
​
# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键
View Code

 

max() 最大值与最小值用法相同

 

reversed()将一个序列翻转, 返回翻转序列的迭代器 reversed 示例:

l = reversed('你好')  # l 获取到的是一个生成器
print(list(l))
ret = reversed([1, 4, 3, 7, 9])
print(list(ret))  # [9, 7, 3, 4, 1]
View Code

 

bytes() 把字符串转换成bytes类型

s = '你好太白'
bs = s.encode('utf-8')
print(bs)
结果:b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7'
​
s1 = bs.decode('utf-8')
print(s1)
结果: 你好太白
​
​
s = '你好'
bs = bytes(s,encoding='utf-8')
print(bs)
# 将字符串转换成字节
​
bs1 = str(bs,encoding='utf-8')
print(bs1)
# 将字节转换成字符串
View Code

 

zip() 拉链方法

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,

然后返回由这些元祖组成的内容,如果各个迭代器的元素个数不一致,则按照长度最短的返回

lst1 = [1,2,3]
​
lst2 = ['a','b','c','d']
​
lst3 = (11,12,13,14,15)
​
for i in zip(lst1,lst2,lst3):
​
    print(i)
​
结果:
​
(1, 'a', 11)
​
(2, 'b', 12)
​
(3, 'c', 13)
View Code

 

sorted排序函数

语法:sorted(iterable,key=None,reverse=False)

iterable : 可迭代对象

key: 排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序

reverse :是否是倒叙,True 倒叙 False 正序

 

lst = [1,3,2,5,4]
lst2 = sorted(lst)
print(lst)    #原列表不会改变
print(lst2)   #返回的新列表是经过排序的
 
 
lst3 = sorted(lst,reverse=True)
print(lst3)   #倒叙
 
结果:
[1, 3, 2, 5, 4]
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
View Code

 

例子(重点)

l = ['20','10','3','15','32'],按照数字的顺序从⼩到⼤排序,不改变原列表。(请⽤最简的⽅式)
l = ['20','10','3','15','32']
print(sorted(l ,key=lambda x: int(x) ))

l = ['班级20','班级10','班级3','班级15','班级32'],按照数字的顺序从⼩到⼤排序,不改变原列表。
l1 = ['班级20','班级10','班级3','班级15','班级32']
print(sorted(l1,key=lambda x:int(x[2:])))

alist = [{'a':5,'b':2},{'a':2,'b':8},{'a':8,'b':2}]请写出以键a的值对alist进⾏排序的表达式
alist = [{'a':5,'b':2},{'a':2,'b':8},{'a':8,'b':2}]
print(sorted(alist,key=lambda x:int(x['a'])))

按照成绩大小排序
l2 = [('大壮', 76), ('雪飞', 70), ('纳钦', 94), ('张珵', 98), ('b哥',96)]
print(sorted(l2,key= lambda x:x[1]))
print(sorted(l2,key= lambda x:x[1],reverse=True))
View Code

 

filter筛选过滤

语法: filter(function,iterable)

function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,
然后根据function返回的True或者False来判断是否保留此项数据 iterable:可迭代对象

 

lst = [{'id':1,'name':'alex','age':18},
        {'id':1,'name':'wusir','age':17},
        {'id':1,'name':'taibai','age':16},]
 
ls = filter(lambda e:e['age'] > 16,lst)
 
print(list(ls))
 
结果:
[{'id': 1, 'name': 'alex', 'age': 18},
 {'id': 1, 'name': 'wusir', 'age': 17}]
View Code

 

 

map映射函数

语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function
计算列表中每个元素的平方,返回新列表
改写成lambda

lst = [1,2,3,4,5]
​
print(list(map(lambda s:s*s,lst)))




计算两个列表中相同位置的数据的和

lst1 = [1, 2, 3, 4, 5]
​
lst2 = [2, 4, 6, 8, 10]
​
print(list(map(lambda x, y: x+y, lst1, lst2)))
​
结果:
​
[3, 6, 9, 12, 15]
View Code

 

 

reduce

from functools import reduce
def func(x,y):
    return x + y
​
# reduce 的使用方式:
# reduce(函数名,可迭代对象)  # 这两个参数必须都要有,缺一个不行
​
ret = reduce(func,[3,4,5,6,7])
print(ret)  # 结果 25
reduce的作用是先把列表中的前俩个元素取出计算出一个值然后临时保存着,
接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值将最开始
临时保存的值覆盖掉,然后在用这个新的临时值和列表中第四个元素计算.依次类推
​
注意:我们放进去的可迭代对象没有更改
以上这个例子我们使用sum就可以完全的实现了.我现在有[1,2,3,4]想让列表中的数变成1234,就要用到reduce了.
普通函数版
from functools import reduce
​
def func(x,y):
​
    return x * 10 + y
    # 第一次的时候 x是1 y是2  x乘以10就是10,然后加上y也就是2最终结果是12然后临时存储起来了
    # 第二次的时候x是临时存储的值12 x乘以10就是 120 然后加上y也就是3最终结果是123临时存储起来了
    # 第三次的时候x是临时存储的值123 x乘以10就是 1230 然后加上y也就是4最终结果是1234然后返回了
​
l = reduce(func,[1,2,3,4])
print(l)
​
​
匿名函数版
l = reduce(lambda x,y:x*10+y,[1,2,3,4])
print(l)




在Python2.x版本中recude是直接 import就可以的, Python3.x版本中需要从functools这个包中导入

龟叔本打算将 lambda 和 reduce 都从全局名字空间都移除, 舆论说龟叔不喜欢lambda 和 reduce

最后lambda没删除是因为和一个人写信写了好多封,进行交流然后把lambda保住了.
View Code

 

posted @ 2019-08-12 16:23  驰念  阅读(302)  评论(0编辑  收藏  举报