内置函数与匿名函数

时间:2022-06-30 19:14:33
内置函数
一、基础数据类型
1、和数字相关
(1)、数字类型 :{
int: 整型,
bool: 布尔型,
float: 浮点型,
complex: 负数}
(2)、进制转换 {
bin: 二进制,
oct: 八进制,
hex: 十六进制
}
(3)、数学运算{
abs: 绝对值,
divmod: 返回商余,
round: 小数精确(默认到整数,也可以标记精确几位),
pow: 幂运算,
sum: 求和,
min: 计算最小值(可以传函数进来,也可以计算可迭代对象),
max: 计算最大值(与min方法一直)
}
2、和数据结构相关
(1)、序列{
列表和元组:{list:转化为列表,tuple:转化为元组},
相关内置函数:{reversed:参数是序列,返回值是反向迭代器,slice:切片},
字符串:{
str: 字符串,
format: 格式化输出(并不仅仅是格式化,还有format_spec功能),
bytes: 转化为bytes类型,
bytearray: 返回一个新的字节数组,
memoryview: 返回给定参数的内存查看对象,
ord: 字符按照unicode转数字
chr: 数字按照unicode转字符
ascii: 字符串转ascii,
repr: 用于%r格式化输出
}
(2)、数据集合{
dict: 字典,
set: 集合,
frozenset: 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素
}
(3)、相关内置函数{
len: 返回一个可迭代对象元素的长度,
enumerate: 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,\
同时列出数据和数据下标,一般用在 for 循环当中,
all: 判断是否有bool值为 False 的值,
any: 判断是否有bool值为 True 的值,
zip: 返回 一个迭代器
filter: 接收一个函数f和一个列表list,,这个函数f的作用是对列表里每个元素\
进行判断,返回Ture或者False,filter根据结果自动过滤掉不符合条件的元素,返回\
返回符合的元素组成新的列表,
map: 函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来
map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,\
一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回,
sorted: 对list、Dict进行排序,返回副本,原始输入不变(参数说明:iterable:可迭代对象;key: \
传入一个函数名,函数的参数是可迭代对象中的每一项,根据函数的返回值大小排序;reverse:排序规则 \
reverse=Ture降序,reverse=False升序,有默认值;返回值:有序列表)
}
3、作用域相关{
locals:以字典类型返回当前位置的全部局部变量,
globals:以字典类型返回当前位置的全部全局变量
}
4、迭代器\生成器相关{
range:函数可创建一个整数列表,一般用在 for 循环中,
next:返回迭代器的下一个项目,
iter:用来生成迭代器
}
5、其他{
(1)、字符串类型代码的执行{
evel:用来执行一个字符串表达式,并返回表达式的值
exec:用来执行一个字符串表达式,无返回值
complie: 编码
}
(2)、输入输出{
input: 输入,
print: 输出,
}
(3)、内存相关{
hash: 用于获取取一个对象(字符串或者数值等)的哈希值,
id: 函数用于获取对象的内存地址
}
(4)、文件操作相关{open:于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写}
(5)、模块相关{__import__:用于动态加载类和函数}
(6)、帮助{help:进入help模式,指定查看某对象的帮助信息}
(7)、调用相关:{callable:返回True或者False}
(8)、查看内置属性{dir: 查看所有的内置函数(dir(__builtins__)),查看对\
某对象的属性及方法}
}
6、面向对象{
pass #先欠着,还没学到,到时候补充 }
7、反射{}
}

匿名函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
#这段代码
def calc(n):
    return n**n
print(calc(10))
 
#换成匿名函数
calc = lambda n:n**n
print(calc(10))

 格式说明

函数名 = lambda 参数 :返回值
#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

l=[3,2,100,999,213,1111,31121,333]
print(max(l))

dic={'k1':10,'k2':100,'k3':30}


print(max(dic))
print(dic[max(dic,key=lambda k:dic[k])])

  

res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

输出
25
16

  

res = filter(lambda x:x>10,[5,8,11,9,15])
for i in res:
    print(i)

输出
15

  练习

内置函数与匿名函数内置函数与匿名函数
现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
#还可以这样写
print([{i:j} for i,j in zip(t1,t2)])
练习
1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x

2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

3.以下代码的输出是什么?请给出答案并解释。
def multipliers():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
请修改multipliers的定义来产生期望的结果。

练习

 内置函数掌握

 

其他:input,print,type,hash,open,import,dir

 

str类型代码执行:eval,exec

 

数字:bool,int,float,abs,divmod,min,max,sum,round,pow

 

序列——列表和元组相关的:list和tuple

 

序列——字符串相关的:str,bytes,repr

 

序列:reversed,slice

 

数据集合——字典和集合:dict,set,frozenset

 

数据集合:len,sorted,enumerate,zip,filter,map