1、函数介绍
Python 函数介绍
2、变量的作用域
3、递归函数
作业
# 作业: #1、使用for循环打印99 乘法表 #2、使用递归求菲薄纳奇数列,1,1,2,3,5,8.。。 for i in range(1,10): for j in range(1,i+1): print(f"{j}*{i}={i*j}",end=' ') print() print() # 递归函数 def func(n): if n == 1 or n == 2: return 1 else: return func(n-1) + func(n-2) n=10 li=[] for i in range(1,n+1): res = func(i) li.append(res) print('递归函数',li) # 直接递归实现 n=10 lis=[] for i in range(n): if i ==0 or i==1: lis.append(1) else: lis.append(lis[i-1]+li[i-2]) print('直接递归',lis)
递归函数求10!
def fun(n): if n==1: return 1 return n*fun(n-1) print(fun(10))
匿名函数
Python3 函数进阶&迭代器与生成器
列表生成器
li = [i*2 for i in range(10)]
print(li)
例题:求100以内3的倍数
列表生成式 li= [] for i in range(1,101): if i%3==0: li.append(i) print(li) print([i for i in range(1,101) if i%3==0]) 更简洁方法: print([i for i in range(3,100,3)])
python的各种推导式(列表推导式、字典推导式、集合推导式)
4、高阶函数
reduce() 累计求和 例如 1+2+3....+100
reduce(lambda x,y:x+y,[1,2,3,4])
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))
# 实现1!+2!+3!+4!
print(reduce(lambda x,y:x*y,[1,2,3,4,5]))
# 实现1!+2!+3!+4! print(reduce(lambda x,y:x*y,[1,2,3,4,5])) # 1-5每个数的阶层形成一个列表 def fat(n): return reduce(lambda x,y:x*y,range(1,n+1)) print(list(map(fat,range(1,6)))) # 对1!..+5!求和 sum=reduce(lambda x,y:x+y,list(map(fat,range(1,6)))) print(sum)
filter()筛选函数
map()会根据提供的函数对指定序列做映射
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组 用list()转化为列表
sorted() 函数
sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回值
返回重新排序的列表。
# sorted # 字典 print(sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})) # 利用key进行倒序排序
# 默认对键进行排序,返回排序列表
# 对字典的值进行排序:
sorted(dict,lambda x:dict[x]) example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x) print(result_list) example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) [1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1, 0]
# 对列表元素按长度进行排序 li3=['a','as','zxc','sd'] print(sorted(li3,key=lambda x:len(x))) # ['a', 'as', 'sd', 'zxc']
迭代器和生成器
生成器都是Iterator对象,但list、dict、str虽然是Iterable(可迭代),却不是Iterator(迭代器)。
把list、dict、str等Iterable变成Iterator可以使用iter()函数:
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
凡是可作用于for循环的对象都是Iterable类型;
# 通过iter()创建迭代器 li = [1,2,3,4] it = iter(li) print(it) print(next(it)) for i in iter(it): print(i,type(i)) <list_iterator object at 0x0000000001D966A0> 1 2 <class 'int'> 3 <class 'int'> 4 <class 'int'>
生成器
悟已往之不谏,知来者之可追。