内置函数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))


 

 

                      

                    

                      

                             

                              

                     

                        

posted @ 2018-08-15 21:01  冒蓝火的加特林哒哒哒  阅读(85)  评论(0)    收藏  举报