回顾
for i in dict #对字典进行遍历,拿到的是字典的key
今日主要内容
1. lambda 匿名函数
语法:
lambda 参数:返回值
不能完成复杂的操作、只能写一行
注意:
1 函数的参数可以是多个,返回值的计算方法只能是一个(可以包含多个参数的计算)
2. 匿名函数并不是没有名字,而是通过__name__查看的时候没有名字,所有统一都叫 lambda
3.参数就是函数的参数,接收变量使用的
2. sorted() 函数 排序
sorted(iterable, key =None ,reverse=false)
sorted(可迭代对象,key = None,reverse= False)
lst = [1,3,23,6,4,34,23,12,9]
lst.sort() #sort是list里面的一个方法
print(lst)
sorted(lst) #内置函数,返回给你一个新列表,新列表是被排序的。 (与dic.frokeys())效果一样,
print(lst)
排序.
1. 可迭代对象
2. key=函数. 排序规则
3. reverse. 是否倒序
原理:在sorted内部会将可迭代对象中的每一个元素传递给这个函数key的参数,根据函数的运算结果进行排序。 例如:可以进行列表中字符串的长度排序
dic = {1:'a',23:'s',2:'g'}
print(sorted(dic)) #如果排序是字典,则返回排序过来后的key。结果是一个列表
3. filter() 函数 过滤
filter(function,iterable) 处理完后是一个迭代器
原理:把可迭代对象中的每一个元素传递给function,然后根据function返回的True或者False来判断是否保留此数据
1. 函数, 返回True或False
2. 可迭代对象
4. map() 映射函数
map(function,iterable) 处理完是一个迭代器
原理:可以对迭代器对象中的每一个元素进行映射,然后分别执行function
1. 函数
2. 可迭代对象
计算两个列表中相同位置的数据之和 lst1 = [1,3,2,5,4] lst2 = [6,3,2,5] print(list(map(lambda x,y:x+y,lst1,lst2))) print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))
5. 递归
自己调用自己.
def func():
func()
func()
用途: 遍历树形结构。比如 我们的文件操作系统
难点:不好想.需要找规律. 不好读
遍历树形结构 import os 引进操作系统 filePath = "d:sylarpython_workspace" def read(filePath, n): it = os.listdir(filePath) # 打开文件夹 for el in it: # 拿到路径 fp = os.path.join(filePath, el) # 获取到绝对路径 if os.path.isdir(fp): # 判断是否是文件夹 print(" "*n,el) read(fp, n+1) # 又是文件夹. 继续读取内部的内容 递归入口 else: print(" "*n,el) # 递归出口 read(filePath, 0)
6. 二分法
掐头结尾取中间. 不停的改变左和右. 间接改变中间.
查询效率非常高、但局限性比较大,必须是有序序列才可以使用二分查找
sorted 返回的是列表,可以直接打印
fiflter 、map 返回的可迭代对象,必须用list()接这个可迭代对象