""" 1.lambda 函数: 匿名函数
# 格式 lambda 参数: 返回值
# f = lambda a,b,c: (a+b)*8
# re = f(1,2,8)
# print(re)
#2, sorted排序,
#格式 sorted(iterable,key=func,reverse = True/False) ,默认 按数字正序排序
# 执行流程:
# 把可迭代对象中的每一个元素拿出来, 放到func中运行. 返回一个数字. 根据数字进行排序
# li = [0,4,2,3,4,6,7,8,8]
# print(sorted(li))
# re = sorted(li, key=lambda x: x>2, reverse=True)
# print(re)
#3 .filter() 筛选 filter(func, iterable)
# 执行流程:
# 把可迭代对象的每一个元素拿出来,交给func函数运行,返回值True或者False,保留结果为True,的元素,舍弃运行结果Falsed
# li = [1,2,3,4]
# a = filter(lambda x:x>1,li)
# print(list(a))
#4 . map 映射,filter(func, Iterable)
# 执行流程:
# 把可迭代对象中的每一个元素拿出来, 放到func中运行.返回数据就是结果
# li = [1,47,147,4,4,7]
# rel = map(lambda a :a+1,li)
# print(list(rel))
#5 .递归
自己调用自己
递归的入口
递归的出口: return
递归的循环条件:动
def func():
print("hello world!")
dunc() # 递归入口
import os
def func(file_p, cen=0):
li = os.listdir(file_p)
for file in li:
file_new_path = os.path.join(file_p,file)
if os.path.isdir(file_new_path):
print(" "*cen, file_new_path)
return func(file_new_path,cen+1)
else:
print(" "*cen,file)
else:
return
func("E:cntv",0)
6 二分法查找
核心思想: 掐头结尾取中间.
前提条件: 有序.
lst = [5,9, 8,4,21,1,8,7,54,9,9,5,84,21,8]
def fin(n,ls):
st = 0
en = len(ls)-1
mid = (st + en) // 2 # 取中间数值
if st <= en:
if n > ls[mid]:
st = mid + 1
return fin(n,ls[st:]) # 返回截取剩余的列表数据
elif n < ls[mid]:
en = mid - 1
return fin(n,ls[:en]) ## 返回截取剩余的列表数据
else:
print("在这里!") # 查询到结果
return True
else:
return "不再" #查询结束, 结果不再其中
lst.sort()
print(lst)
print(fin(84,lst))
li = [1,5,58,7,8,2,4,5,9]
def cha(n, ls ,le = 0,ri = None):
if ri == None:
ri = len(ls)-1
mid = (le + ri)
if le <= ri:
if n > ls[mid]:
le = mid + 1
elif n < ls[mid]:
ri = ri -1
else:
return mid
return cha(n,ls,le,ri) # 循环查询列表锁定去
else:
return "-1"
print(cha(1,li))