lambda 匿名函数
参数: 返回值
ret=lambda a,b:a+b
print(ret(188,99))
sorted() 排序
sorted(iterable, key=func, reverse=True/False)
# 可迭代对象, 函数 ,返回值反序(True),正序(False)
把可迭代对象的每一项传递给函数,函数返回一个数字,再根据这个数字排序
lst = [{"id": 1, "name": 'alex', "age": 18},
{"id": 2, "name": 'wusir', "age": 16},
{"id": 3, "name": 'taibai', "age": 17}]
l2=sorted(lst,key=lambda dic:dic["age"])
filter() 筛选
filter(func, Iterable)
把可迭代对象中每一项元素拿出来 放在func中运行,返回Ture/False.根据返回的True/False
来决定这个数据是否保留
lst=[23,28,15,27,24]
筛选出大于18并且为而偶数的
f=filter(lambda age:age>18 and age%2==0,lst)
print(sorted(f))
map( ) 映射
map(func,Iterable)
把可迭代对象中的每一项元素拿出来,放到func中运行,返回数据就是结果
计算两个列表相同位置的数据的和
lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x + y , lst1, lst2)))
递归:
def func():
print()
func() #递归入口
func()
用递归实现1-100
import os
sys.setrecursionlimit(5000) #设置递归的最大深度,一般不要修改
def func(i):
print(i)
func(i+1)
func(1) #递归深度:1000 但是到不了1000, 997-998
用递归遍历文件夹和文件:
import os
def func(file_path,count):
lst=os.listdir(file_path)
for file in lst:
full_path=os.path.join(file_path,file)
if os.path.isdir(full_path):
print(" "*count,file)
func(full_path,count+1)
else:
print(" "*count,file)
else:
return
func("文件夹",0)
二分法:
查找效率很高:
缺点:有序序列
lst=[1,8,15,6,7,9,5,1,5,4,9,4,25,26,21,24,20,28,50,81,87,56,64,32,]
lst1=sorted(lst)
print(lst1)
n=int(input("请输入一个数字:"))
def func(n,lst1,left,right):
if left<right:
mid=(left+right)//2
if n>lst[mid]:
left=mid+1
if n<lst[mid]:
right=mid-1
else:
return True
return func(n,lst1,left,right)
else:
return False
lst1=[1, 1, 4, 4, 5, 5, 6, 7, 8, 9, 9, 15, 20, 21, 24, 25, 26, 28, 32, 50, 56, 64, 81, 87]
ret=func(87,lst1,0,len(lst1)-1)
print(ret)
方法二:
def func(n,lst1,):
left=0
right=len(lst1)-1
if left<right:
mid = (left + right) // 2
if n>lst[mid]:
new_lst=lst[mid+1:]
return func(n,new_lst)
if n<lst[mid]:
new_lst=lst[:mid]
return func(n, new_lst)
else:
return True
else:
return False
lst1=[1, 1, 4, 4, 5, 5, 6, 7, 8, 9, 9, 15, 20, 21, 24, 25, 26, 28, 32, 50, 56, 64, 81, 87]
ret=func(87,lst1,0,len(lst1)-1)
print(ret)