lambda函数/排序/filter/map

1.lambda 匿名函数
  zrf = lambda x:x**2
  ret = zrf(10) #这里面实际上还是有函数名
  print(ret)
2.sorted 排序(list也自带排序功能)
  排序函数
  sorted(iterable,key=函数名,reverse=False)
  key:把里面的每一个值拿到函数处理之后返回一个 数字
  在根据数字排序 顺序或者倒序

3.filter 筛选 过滤
  filter(function,iterable)
  function:用来筛选的函数
  函数返回的是true或者false
  def func(age):
    return age>18
4.map 映射函数
  map(function,iterable)
  映射即为函数
  print(list(map(lambda x,y:x+y,lst1,lst2)))

 1 # 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
 2 # name=[‘oldboy’,'alex','wusir']
 3 name = ['oldboy', 'alex', 'wusir']
 4 
 5 
 6 def func(s):
 7     return s + "_sb"
 8 
 9 
10 # 这里面映射之后  返回的是一个可迭代对象
11 
12 for a in map(lambda s: s + "_sb", name):
13     print(a)
View Code
 1 # 用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
 2 l = [{'name': 'alex'}, {'name': 'y'}]
 3 
 4 
 5 # 这里面字典的操作有点忘了
 6 def func(dic):
 7     dic['name'] += 'sb'
 8     return dic
 9 
10 
11 # 怎么写成匿名函数?
12 print(list(map(lambda s: s['name'] + 'sb', l)))
13 
14 #
15 #用filter来处理,得到股票价格大于20的股票名字
16 shares = {
17     'IBM': 36.6,
18     'Lenovo': 23.2,
19     'oldboy': 21.2,
20     'ocean': 10.2,
21 }
22 
23 #  这个怎么访问  ===>bug!!!!
24 # def func(s):
25 #     return s[1] > 20
26 print(list(filter(lambda k: shares[k] > 20, shares)))
View Code

5.递归(难点)

  递归的深度1000 但是到不了1000
  一般人的电脑到997-998
  可以在sys里面的改掉限度
  递归非常消耗资源
  一般都不用递归
  but 写起来简单!!!
  os.listdir
  os.path.join
  os.path.isdir

 1 import os
 2 
 3 
 4 # os.listdir
 5 # os.path.join
 6 # os.path.isdir
 7 
 8 def func(path, deepth):
 9     temp = os.listdir(path)
10     for file in temp:
11         full_path = os.path.join(path, file)
12         if os.path.isdir(full_path):
13             print("  " * deepth, full_path)
14             func(full_path, deepth + 1)
15         else:
16             print("  " * deepth, full_path)
View Code

6.二分法查找

原文地址:https://www.cnblogs.com/d9e84208/p/10589932.html