共计 1845 个字符,预计需要花费 5 分钟才能阅读完成。
前篇的意思就是说 …… 我还没有成为 python 王者(想写大神居然通不过),只是刚刚入了个门。总是在艳羡人家玩爬虫啊,办公自动化啊,还用 python 玩玩股票啊,看起来都牛逼哄哄。我也不愿再做小菜鸟了,我也要发家致富!第一步就是把我每天学到的货色记录下来,加深点印象。有没有骚年跟我一起冲!!!好了好了,我先冲。(如果小白看到了,对我所写的务必持狐疑态度,这只是我本人的笔记;如果大神偶然瞄到了,我写错了麻烦纠正下哈!)
递归函数、匿名函数、内置函数
1. 递归函数
递归是一种编程思维,我不太好用语言解释,等下就用代码去解释;比方要遍历一个文件夹下的所有文件,通常就会应用递归来实现的。
1.1 递归的特点
- 函数外部本人调用本人
- 必须有进口
1.2 利用:3 以内数字累加和
# 3 + 2 + 1
def sum_nums(num):
# 进口
if num == 1:
return 1
return num + sum_nums(num-1)
print(sum_nums(3))
emmm… 递归是这样的,return 3+sum_nums(2)–>3+2+sum_nums(1)–>3+2+1,而后后果 6 就进去啦!
2. lambda 函数
如果函数有一个返回值,并且只有一句代码,那么能够应用 lambda 简化。
2.1 lambda 语法
举个例子吧:fn = lamdba a: a+1
等同于
def fn(num):
return num+1
留神:间接输入 lambda 表达式的话,输入的是 lambda 函数的内存地址,也要应用 print(fn(2)) 这样的写法噢!
2.2 lambda 的参数模式
- 无参数
lambda: 100
- 一个参数
lambda a: a
- 缺省参数
lambda a, b, c=100: a + b + c
- 不定长地位参数(返回元组)
lambda *args: args
- 不定长关键字参数(返回字典)
lambda **kwargs: kwargs
2.3 lambda 的利用
- 利用一:判断数字的大小,输入大的数字
fn = lambda a, b: a if a > b else b
print(fn(20, 10))
- 利用二:列表数据按字典 key 排序
students = [{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
]
# 以 age 的升序排列
students.sort(key=lambda x: x['age'])
print(students)
这里有两点阐明一下:
- sort() 中的参数 key 前面能够跟 function,用于将有字典的列表按字典的 key 做排序;
- sort() 还有一个参数是 reverse,默认 reverse=False 为升序排列,reverse=True 就是降序啦。
- sort() 和 sorted()
讲到排序顺便提一下这两个函数的区别,sort() 是 list 的办法,而 sorted 不是,用代码就能够解释了。
# sort 是在原列表的根底上作排序
aa = [2, 1, 3]
aa.sort() # 返回的是 None
print(aa)
# sorted 是返回一个新的列表,并且不是 list 的办法
bb = sorted(aa, reverse=True)
print(bb)
3. 内置函数
这里次要介绍 3 个高阶内置函数。
- map(func, lst)
将传入的函数作用到 list 的每个元素中,并将后果组成新的 list,返回迭代器。
# map() 计算 `list1` 序列中各个数字的平方
list1 = [1,2,3,4,5]
def func_double(num):
return num ** 2
print(list(map(func_double, list1)))
输入的后果是 [1, 4, 9, 16, 25];
- reduce(func, lst)
func 必须有两个参数, 每次 func 计算的后果持续和序列的下一个元素做累积计算。
import functools
# reduce() 计算 list1 序列中各个数字的累加和
def func_sum(a, b):
return a + b
print(functools.reduce(func_sum, list1))
输入的后果是 15。
留神:reduce 间接返回数值
- filter(func, lst)
过滤掉 lst 中不符合条件的元素, 返回一个 filter 对象。
# filter() 删除奇数留下偶数
def func_filter(num):
if num % 2 == 0:
return num
print(list(filter(func_filter, list1)))
输入后果为 [2, 4]。