day 14
01.匿名函数
没有函数名的函数
函数通过函数名加括号来调用,没有函数名也就是说无法被调用,无法单独使用。
# 匿名函数构成
lambda 参数:返回值
# 如果要调用的话
f=lambda 参数:返回值
f(参数)# 将其变为有名函数
其实用通常与max/min/filter/map/sorted连用,这与这五个内置方法的使用方法有关
- max 返回最大值 括号里加同种类型元素(min)用法相同
max(参数,key=函数对象(默认型参))
res = max([1, 2, 3, 4, 5])
print(res) # 返回5
res = max([1, 2, 3, 4, 5],[1]) # 当后面列表中只有0,1时只打印前面的列表
print(res) # 返回[1,2,3,4,5]
res = max([1, 2, 3, 4, 5],[2])
print(res) # 返回[2]
res = max(1, 2, 3, 4, 5, 6, )
print(res) # 返回6
# 当我们把字典当作参数传进去时就只会按照key的大小排列
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
res=max(salary_dict)
print(res) # z , 这样使用只会对所有的key进行排序取出最大的那一个
def func(k):
return salary_dict[k]
res=max(salary_dict,key=func) # max提供了这样一种用法(参数,key=函数名)会将参数内的每一个元素当作实参传入该函数内并接收返回值,在对返回值进行排序判断
# # key=func默认做的事情
# # 1. 循环遍历salary_dict,会取到所有的key值
# # 2. 然后把所有的key值依次丢入func中,返回薪资
# # 3. 通过返回的薪资排序,得到最大值
print(res)
# 但这样写就很繁琐,匿名函数提供了这样一种方法
res=max(salary_dict,key=lambda k:salary_dict[k])
print(res)
- fileter 筛选
filter(函数名,参数) # 通过函数内条件对参数内元素进行筛选,输出结果为对象
salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}
res = filter(lambda item: salary_dict[item] > 3000, salary_dict)
print(list(res))
- map 映射
map(函数名,参数) # 将参数内元素通过函数进行处理
def function1(item):
return item + 2
res = map(function1, [1, 2, 3, ])
print(res)
print(list(res))
- sorted 排序
sorted(参数,key=函数对象,reverse=任意数据类型),reverse= 决定正序还是到序,默认为None,布尔值为False则正序,为True则到序;用法与max相同
02.内置函数
python解释器内置的方法
- enumerate 获取索引和值
lt=['a','b','c']
dic={}
for k,v in enumerate(lt):
print(k,v)
dic[k]=v
print(dic)
- eval 把字符串的引号去掉,留下来的是什么就是什么
s='vv'
vv='sl'
print(eval(s)) # sl ;可应用于从文件中提取出的字符串转换
- bytes 非ascll字符编码格式的字符变为二进制格式
res = bytes('中国', encoding='gbk')
print(res)
-
chr/ord 转换为二进制相映的字符/转换为相应二进制的十进制
print(chr(88)) print(ord('a'))
-
divmod 取整,取余
print(divmod(10,2)) # (5,0)
- hash 打印哈希值(整形为其本身)
print(hash(-125.123))
- abs 为整数
print(abs(-123))
- all 可迭代对象内的元素全部为True则为True
print(all([1,2,3,0]))
- any 可迭代对象内的元素全部为False则为False
print(any([0, 0,0 ]))
- bin/oct/hex 二进制/八进制/十六进制
print(bin(123))
print(oct(123))
print(hex(123))
- dir 列出模块的所有方法
import time
print(dir(time))
- frozenset 不可变化的集合,类似于元组 # 将可迭代对象的迭代器对象写成一个不可变化的集合
s = frozenset({1:2,3:4})
print(s)
- gloabals/locals
print(globals()) # 列出所有全局变量
print(locals()) # 列出当前所在位置的所有变量
- pow 求幂
print(pow(2,3)) # 2的3次幂
- round
print(round(-123.1234)) # -123
- slice # 与索引切片相同
s = slice(1, 5, 2)
lt = [1, 2, 3, 4, 5, 6, 7]
print(lt[s])
print(lt[1:5:2])
- sum # 求和
print(sum([1, 2, 3, 4, 5])) # 15
- __import__ # 通过字符串来到如模块·
time = __import__('time') # 等于 import time