函数
1. 匿名函数
def func(a, b):
return a + b
# 构建匿名函数
func1 = lamda a, b: a + b
func1(1, 2)
dict = {'a': 3, 'b': 2, 'c': 1}
print(min(dict,key=lambda x: dict[x]))
l2 = [('太白', 18), ('alex', 73), ('wusir', 35), ('口天吴', 41)]
print(min(l2))
print(min(l2,key=lambda x: x[1])) # 输入为元组, 输出为x[1]
# 每次遍历元组,输出的索引位置为1的值跟后面一个元组对应的索引1的值比较,
# 值小则保存,最后输出元组x
# sorted 加key
l1 = [22, 33, 1, 2, 8, 7, 6, 5]
l2 = sorted(l1)
print(l2)
(venv) C:\work\python>python learn.py
[1, 2, 5, 6, 7, 8, 22, 33]
# 如果对下面这个进行排序呢?
l2 = [('太白', 18), ('alex', 73), ('wusir', 35), ('口天吴', 41)]
print(sorted(l2))
# 老样子 会按照元组的字母排列
(venv) C:\work\python>python learn.py
[('alex', 73), ('wusir', 35), ('口天吴', 41), ('太白', 18)]
# 如果想让它以数字排列呢 (加key值, 让他每次遍历的输出x[1]进行排序)
print(sorted(l2, lambda x:x[1]))
# 倒序排列
l2 = [('太白', 18), ('alex', 73), ('wusir', 35), ('口天吴', 41)]
print(sorted(l2, key=lambda x:x[1], reverse=True))
filter 列表推导式的筛选模式
# filter 列表推导式的筛选模式
l1 = [2, 3, 4, 1, 6, 7, 8]
print(i for i in l1 if i > 3) # 返回的是列表
ret = filter(lambda x: x>3, l1) # 返回的是迭代器
print(ret)
print(list(ret))
map 列表推导式的循环模式
# map 列表推导式的循环模式
l1 = [1, 4, 9, 16, 25]
print([i**2 for i in range(1, 6)]) # 列表
ret = map(lambda x: x**2, range(1, 6)) # 迭代器
print(ret)
print(list(ret))
reduce
# reduce
from functools import reduce
def func(x, y):
'''
第1次: x y : 11 2 x + y = 记录: 13
第2次: x y : 13 3 x + y = 记录: 16
第3次: x y : 16 4 x + y = 记录: 20
'''
return x + y
l = reduce(func, [11, 2, 3, 4])
print(l)