码迷,mamicode.com
首页 > 其他好文 > 详细

4.4 函数工具

时间:2018-02-03 00:40:12      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:成绩   4.4   第一个   理解   func   遍历   编写   对象   过滤   

1 map()映射

 1 #把一个同学的5科成绩列表中,鉴于没有一门及格的,我决定给每一门成绩加上60分
 2 #请叫我雷锋
 3 score = [1,2,3,4,55]
 4 result = []
 5 #方法一:用for遍历
 6 for i in score:
 7     a = i + 60
 8     if a > 100 :
 9         a = 100
10     result.append(a)
11 
12 print(result)
13 
14 #[61, 62, 63, 64, 100]  #每一门都及格了
15 
16 #方法二:用推导,听说这种方式效率更高,底层是C语言实现的
17 re = [i + 60 for i in score if i <= 40  ]
18 print(re)
19 
20 #[61, 62, 63, 64]
21 #少了一门成绩,该怎么解释呢
22 #是我水平有限吗?55分的搞不定了
23 
24 #方法三:用map()映射,map()接受两个参数,第一个参数是函数;第二个参数是可迭代对象
25 
26 def fun(x):
27 
28     if x > 40:
29         return  100
30     else:
31         return x + 60
32 
33 map(fun,score)
34 print(score)
35 a = map(fun,score)
36 print(a)
37 
38 #[1, 2, 3, 4, 55]
39 #<map object at 0x00000000006D70F0>   #map()返回的是迭代器对象
40 
41 l = list(a)
42 print(l)
43 
44 #[1, 2, 3, 4, 55]
45 #<map object at 0x00000000006CD630>
46 #[61, 62, 63, 64, 100]
47 
48 #这个map()函数可以这么理解,就是从作为第二个参数的可迭代对象中取出一个元素交个函数处理,
49 #并将函数的处理结果组成一个迭代器对象返回
50 #所以,作为map第一个参数的函数在编写的时候要注意是把一个元素值作为参数的
51 
52 t = tuple(map(fun,score))
53 print(t)
54 #61, 62, 63, 64, 100)

 

2 filter()过滤

 1 #filter()也是接受两个参数,第一个参数是函数名;第二个参数是可迭代对象
 2 #过滤器的作用是逐个从可迭代对象中取出元素,去函数中判断一下是否符合
 3 #函数中定义的判断逻辑,如果符合就把符合条件的元素以迭代器的形式返回
 4 #需要注意的是,函数的作用是判断,只需要返回判断的结果就行了
 5 
 6 #需求,有一个整数列表,只想取出其中的偶数
 7 l = [1,2,3,4,5,6,7,8,9]
 8 
 9 def fun(x):
10     if x % 2 == 0:
11         return True
12     else:
13         return False
14 
15 result = filter(fun,l)
16 for i in result:
17     print(i)
18     
19 #2
20 #4
21 #6
22 #8

 

3 reduce()合并

 1 from functools import *
 2 
 3 #reduce(fun,Iter)函数会将可迭代对子昂中所有数据进行如下操作:
 4 #用传递给reduce中的函数(两个参数),先对可迭代对象中的前两个元素进行操作,
 5 #并将预算结果和第三个元素交给fun函数运算,最终得到一个计算结果
 6 
 7 l = [1,2,3,4,5,6,7,8,9]
 8 
 9 def fun(x,y):
10     return x + y
11 
12 re = reduce(fun,l)
13 print(re)
14 # 45

 

4.4 函数工具

标签:成绩   4.4   第一个   理解   func   遍历   编写   对象   过滤   

原文地址:https://www.cnblogs.com/avention/p/8406326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!