内置函数labda、sorted、filter、map、递归
#匿名函数 lambda 参数 :返回值(函数体) a=lambda n: n+1 print(a(2)) print(a.__name__) b=lambda x:x*x print(b(2)) #返回最大值 print("返回最大值") a=lambda x,y:max(x,y) print(a(1,2)) di=[{"name":"汪峰","age":30}, {'name':"章子怡","age":20}, {'name':"汪旦看见哈师大","age":18}, {"name":"alex","age":38}, ] #sorted(可迭代对象,key=排序条件,reverse=False是否反序) 排序 ll=sorted(di,key=lambda el:len(el["name"]),reverse=False) print(ll) print([ a["name"] for a in ll]) #filter(过滤条件,可迭代的对象) 过滤 print("去除姓汪的") bb=filter(lambda el:el["name"][0]!="汪",di) s=[a for a in bb] print(s) print([a["name"] for a in s]) #递归完成二分法 Ist=[3,5,7,9,10,12,13,14,15,16,18,20] def func(n,left,right): mid=(left+right)//2 if right >= left: if n== Ist[mid] : print("找到了,是第%d个"% (mid+1)) return mid #返回索引 elif n > Ist[mid]: left= mid+1 return func(n,left,right) elif n < Ist [mid]: right=mid-1 return func(n,left,right) else: print("没有这个数") return -1 rst=func(10,0,len(Ist)-1) print(rst) #while循环完成二分法 Ist=[3,5,7,9,10,12,13,14,15,16,18,20] n=10 left=0 right=len(Ist)-1 while right >=left: mid=(right+left)//2 if Ist[mid]==n: print("找到这个数了") break elif Ist[mid]>n: right=mid-1 elif Ist[mid]<n: left=mid+1 else: print("没这个数") #用for循环遍历查找 Ist=[3,5,7,9,10,12,13,14,15,16,18,20] n=10 for el in Ist : if el==n: print("找到了") break else: print("不存在") #遍历 D:/sylar文件夹, 打印出所有的文件和普通文件的文件名 import os def func1(filepath,n): #1.打开这个文件夹 files=os.listdir(filepath) #2.拿到每个文件名 for file in files: #3.获取到路径 f_d=os.path.join(filepath,file) #4.判断是否是文件夹 if os.path.isdir(f_d): #5.如果是文件夹。继续在来一遍 print("\t"*n,file,":") func1(f_d,n+1) else: print("\t"*n,file) func1("C:/Users/Mr Chu/Desktop/资料",0)#C:\Users\Mr Chu\Desktop\资料
#4.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb #name=[‘oldboy’,'alex','wusir'] name=['oldboy','alex','wusir'] print(list(map(lambda el:el+"_sb",name))) #5,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾 # l=[{'name':'alex'},{'name':'y'}] l=[{'name':'alex'}, {'name':'y'}] print(list(map(lambda a:a["name"]+'_sb',l))) # 6,用filter来处理,得到股票价格大于20的股票名字 shares={ 'IBM':36.6, 'Lenovo':23.2, 'oldboy':21.2, 'ocean':10.2, } print(list(filter(lambda i:shares[i]>20,shares))) # 7,有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。 # 结果:list一下[9110.0, 27161.0,......] # portfolio = [{'name': 'IBM', 'shares': 100, 'price': 91.1}, # {'name': 'AAPL', 'shares': 50, 'price': 543.22}, # {'name': 'FB', 'shares': 200, 'price': 21.09}, # {'name': 'HPQ', 'shares': 35, 'price': 31.75}, # {'name': 'YHOO', 'shares': 45, 'price': 16.35}, # {'name': 'ACME', 'shares': 75, 'price': 115.65}] portfolio=[{"name":"IBM","shares":100,"price":91.1}, {"name":"AAPL","shares":50,"price":543.22}, {"name": "FB", "shares": 200, "price": 21.09}, {"name":"HPQ","shares":35,"price":31.75}, {"name":"YHOO","shares":45,"price":16.35}, {"name":"ACME","shares":75,"price":115.65} ] print(list(map(lambda x:x["shares"]*x["price"],portfolio))) # # 8,还是上面的字典,用filter过滤出单价大于100的股票。 print(list(filter(lambda el:el["price"]>100,portfolio))) # 9,有下列三种数据类型, l1 = [1,2,3,4,5,6] l2 = ['oldboy','alex','wusir','太白','日天'] tu = ('**','***','****','*******') # 写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。) # [(3, 'wusir', '****'), (4, '太白', '*******')]这样的数据。 print(list(filter(lambda x:x[0]>2and len(x[2])>=4,zip(l1,l2,tu)))) # 10,有如下数据类型: l1 = [ {'sales_volumn': 0}, {'sales_volumn': 108}, {'sales_volumn': 337}, {'sales_volumn': 475}, {'sales_volumn': 396}, {'sales_volumn': 172}, {'sales_volumn': 9}, {'sales_volumn': 58}, {'sales_volumn': 272}, {'sales_volumn': 456}, {'sales_volumn': 440}, {'sales_volumn': 239}] # 将l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。 print(sorted(l1,key=lambda el:el["sales_volumn"],reverse=False))









浙公网安备 33010602011771号