1.lambda 匿名函数
lambda 参数: 返回值
函数名统一都叫lambda.
2.sorted() 排序函数
排序函数
sorted(iterable,key,reverse)
key:排序规则.
运行流程:可迭代对象中的每一个元素都交给后面key函数来执行.
得到一个数字(权重).通过这个数字进行排序
3.filter()过滤函数
filter(function,iterable)
把可迭代对象中的每一个元素交给前面的函数进行筛选.函数返回True或者False
4.map()映射函数
map(function, iterable)
把可迭代对象中的数据交给前面的函数进行执行,返回值就是map的处理结果
5.递归
函数自己调用自己
最大深度:1000. ps:到不了1000就停了
a = 1 def func(): global a a += 1 print(a) func() func()
6.二分法
核心掐头去尾取中间. 一次砍一半
两种算法: 常规算法,递归算法
lst = [22,33,44,55,66,77,88,99,101,238,345,456,567,6789,789] def func(n, left, right): if left <= right: # 边界 print('进行一次二分法') mid = (left + right) // 2 if n > lst[mid]: left = mid + 1 return func(n, left, right) elif n < lst[mid]: right = mid - 1 return func(n, left, right) elif n == lst[mid]: print("找到了") return mid # return 通过 return返回. 终止递归 else: print("没有这个数") # 递归出口 return -1 ret = func(789,0,len(lst) - 1) print(ret)
1,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
name=[‘oldboy’,'alex','wusir']
2,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
l=[{'name':'alex'},{'name':'y'}]
3,用filter来处理,得到股票价格大于20的股票名字
shares={
'IBM':36.6,
'Lenovo':23.2,
'oldboy':21.2,
'ocean':10.2,
}
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}]
8,还是上面的字典,用filter过滤出单价大于100的股票。
9,有下列三种数据类型,
l1 = [1,2,3,4,5,6]
l2 = ['oldboy','alex','wusir','太白','日天']
tu = ('**','***','****','*******')
写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。)
[(3, 'wusir', '****'), (4, '太白', '*******')]这样的数据。
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大小进行排序,形成一个新的列表。
# 1. name=['oldboy','alex','wusir'] ret = map(lambda i:i+"_sb",name) print(list(ret)) # 2. l = [{'name':'alex'},{'name':'y'}] ret = map(lambda i:i['name']+'sb',l) print(list(ret)) # 3. shares={ 'IBM':36.6, 'Lenovo':23.2, 'oldboy':21.2, 'ocean':10.2, } ret = filter(lambda i:shares[i]>20,shares) print(list(ret)) # 4. 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}] ret = map(lambda i:i['shares']*i['price'],portfolio) print(list(ret)) # 5. ret = filter(lambda i:i['price'] > 100,portfolio) print(list(ret)) # 6. l1 = [1,2,3,4,5,6] l2 = ['oldboy','alex','wusir','太白','日天'] tu = ('**','***','****','*******') ret = filter(lambda i:i[0]> 2 and len(i[2])>=4 ,zip(l1,l2,tu)) print(list(ret)) # 7 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}] def func(dic): i =dic['sales_volumn'] return i a = sorted(l1,key=func) print(a) b = sorted(l1,key=lambda i:i['sales_volumn']) print(b)