Skip to content

Commit 44ebfac

Browse files
committed
1.高级函数练习
1 parent 4f76cb7 commit 44ebfac

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
# 01.函数可以当做变量名使用
3+
# def myAddfun(a,b):
4+
# return a+b
5+
#
6+
# f1=myAddfun
7+
# ret1=f1(1,2)
8+
# print(ret1)
9+
10+
11+
# 02.匿名函数
12+
13+
# 关键字lambda表示匿名函数,冒号前面的x表示函数参数。
14+
# 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
15+
16+
f2=lambda x1:x1+1
17+
for i in range(11):
18+
print(f2(i))
19+
20+
21+
22+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from functools import reduce
2+
3+
# 01.map 是指定义一个系统函数,接受一个函数,另外一个参数为一个list,map函数会对list中的
4+
# 每一个元组执行 函数,后返回一个itrable,
5+
# 此功能通过循环也能实现,只不过比较复杂,不够简单明了
6+
7+
# def mi(a):
8+
# return a**3
9+
# retVal1=map(mi,[1,2,3,4,5])
10+
# print(list(retVal1))
11+
12+
13+
# 02.reduce 是指接受函数和list,list中必须有两个参数,reduce函数,会从list中每次取出两个,然后将结果继续和第三个执行相同操作
14+
15+
# 例1(求和)
16+
17+
# def reducefn1(a,b):
18+
# return a+b
19+
#
20+
# retval2=reduce(reducefn1,[1,2,3,4])
21+
# print(retval2)
22+
# print(sum([1,2,3,4])) 此处虽然可以使用sum直接求和,但是更复杂的就不能实现了
23+
24+
# 例如下面的list想变成 12345 会更直接
25+
# list1=[1,2,3,5]
26+
#
27+
# def reducefn2(a,b):
28+
# return a*10+b
29+
#
30+
# print(reduce(reducefn2,list1))
31+
32+
33+
34+
35+
# 03.高级训练,通过mapduce将一个字符串转化为int
36+
37+
str1='1234420KKKK9789'
38+
39+
numDic={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
40+
41+
# intList= map(lambda m1:numDic[m1],str1)
42+
43+
intVal=reduce(lambda r1,r2:r1*10+r2,map(lambda m1:numDic[m1],str1))
44+
45+
46+
print(intVal)
47+
# print(str1+1)
48+
49+
50+
51+
52+
53+
54+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
# filter 顾名思义,同map类似,也是内置函数,依次将元素作用于函数,根据返回true或false,过滤元素
3+
4+
5+
list1=range(1,101)
6+
list2=list(filter(lambda f1:f1%3==1,list1))
7+
print(list2)
8+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from operator import itemgetter
2+
3+
# 排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。
4+
# 如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。
5+
#
6+
# print(sorted([36, 5, -12, 9, -21], key=abs))
7+
# print(sorted([36, 5, -12, 9, -21]))
8+
#
9+
# print(sorted(['bob', 'about', 'Zoo', 'Credit'],key=str.lower))
10+
#
11+
12+
# def by_name(t):
13+
# pass
14+
15+
16+
dic1={'Bob': 75, 'Adam':92, 'Boa':66, 'Lisa':88}
17+
18+
19+
list1=sorted(dic1.items(),key=lambda x:x[0],reverse=False)
20+
list2=sorted(dic1.items(),key=lambda x:x[0],reverse=True)
21+
22+
23+
list3=sorted(dic1.items(),key= itemgetter(0),reverse=False)
24+
list4=sorted(dic1.items(),key= itemgetter(0),reverse=True)
25+
26+
list5=sorted(dic1.items(),key= itemgetter(1),reverse=False)
27+
list6=sorted(dic1.items(),key= itemgetter(1),reverse=True)
28+
29+
# print(list1)
30+
# print(list2)
31+
# print(list3)
32+
# print(list4)
33+
print(list5)
34+
print(list6)
35+
36+
# print(list1==list3)
37+
# print(list2==list4)
38+
39+
40+
# L2 = sorted(L, key=by_name)
41+
# print(L2)

0 commit comments

Comments
 (0)