python0到7能组成的奇数个数_我只不过是个python王者-前篇002之递归函数、匿名函数、内置函数...

前篇的意思就是说......我还没有成为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: kwargs2.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]。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值