前篇的意思就是说......我还没有成为python王者(想写大神居然通不过),只是刚刚入了个门。总是在艳羡人家玩爬虫啊,办公自动化啊,还用python玩玩股票啊,看起来都牛逼哄哄。我也不愿再做小菜鸟了,我也要发家致富!第一步就是把我每天学到的货色记录下来,加深点印象。有没有骚年跟我一起冲!!!好了好了,我先冲。(如果小白看到了,对我所写的务必持狐疑态度,这只是我本人的笔记;如果大神偶然瞄到了,我写错了麻烦纠正下哈!)
递归函数、匿名函数、内置函数
1. 递归函数
递归是一种编程思维,我不太好用语言解释,等下就用代码去解释;比方要遍历一个文件夹下的所有文件,通常就会应用递归来实现的。
1.1 递归的特点
- 函数外部本人调用本人
- 必须有进口
1.2 利用:3以内数字累加和
# 3 + 2 + 1def 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 bprint(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() # 返回的是Noneprint(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 + bprint(functools.reduce(func_sum, list1))
输入的后果是15。
留神:reduce间接返回数值
- filter(func, lst)
过滤掉lst中不符合条件的元素, 返回一个 filter 对象。
# filter() 删除奇数留下偶数def func_filter(num): if num % 2 == 0: return numprint(list(filter(func_filter, list1)))
输入后果为[2, 4]。