Python的基础知识基本快介绍完了,这里再补充下函数的一些知识。后续主要会介绍正则、爬虫,数据分析、还有一些Python进阶。
1、map()和reduce()
含义解释:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。(摘自百度百科)
1.1 map()
map(参数1,参数2):
参数1:函数;参数2:序列
将传入的函数依次作用在序列中的每一个元素,并把结果作为新的Iterator返回
示例:
现在我们要利用这个函数,求1-10的平方。
用一个for循环可以很快的求出结果:
输出:
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
现在我们用map()来实现:
输出:
>>>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
1.2 reduce()
reduce(参数1,参数2):
参数1:函数;参数2:序列
把一个函数作用在一个序列上,但是这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素累计运算。
示例:
我们先写一个求和函数:
我们要利用这个函数,求1-10的和
用一个for循环可以很快的求出结果:
输出:
现在我们用reduce()来实现
输出:
1.3 综合应用
有一个字符串"123456789",求这个字符串对应的每个元素相加后的和。
解法思维:按照以往的做法,我们需要对字符串进行处理,先把每个字符串转成数字,然后进行相加:
输出:
现在使用mapreduce来实现:
输出:
2、filter()
filter(参数1,参数2):
参数1:函数;参数2:序列
将传入的函数依次作用在序列中的每一个元素,根据返回值是True还是False决定是否保留该元素。
示例:
有一个列表[1,2,3,4,5,6,7,8,9],要求:只保留奇数,偶数剔除。
我们利用之前介绍的列表处理方法和循环函数可以很快求出结果:
输出:
>>>[1, 3, 5, 7, 9]
现在我们使用filter()来实现:
输出:
>>>[1, 3, 5, 7, 9]
3、sorted()
之前在介绍列表的时候,有介绍过列表的排序:
输出:
>>>[4, -3, 2, 1, -6, 5]
>>>[-6, -3, 1, 2, 4, 5]
Python有个sorted()函数也可以对list进行排序,而且功能更加强大。
示例1:普通排序
输出:
>>>[-6, -3, 1, 2, 4, 5]
>>>[5, 4, 2, 1, -3, -6]
示例2:函数作用后排序
输出:
>>>[1, 2, -3, 4, 5, -6]
>>>[1, 2, -3, 4, 5, -6]
领取专属 10元无门槛券
私享最新 技术干货