map reduce filter python,简述内置函数filter、map、reduce的作用?
介绍下计算机编程语言中映射,缩小,和过滤器内置函数的方法:
一:地图
地图(.)
映射(函数,序列[,序列,]) -列表
说明:
对顺序中的项目依次执行功能(项目),执行结果输出为列表。
例子:
map(str,range(5)) #对范围(5)各项进行潜艇用热中子反应堆(海底热反应堆的缩写)操作
[0, 1, 2, 3, 4] #返回列表
定义添加(n):返回不知道
.
map(add,range(5)) #对范围(5)各项进行增加操作
[0, 2, 4, 6, 8]
map(x:x x,range(5))#函数,各项本身
[0, 2, 4, 6, 8]
map(x:x ^ 1,range(10))#函数,各项一
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
地图(添加,“周jy”)
[zz , hh , oo , uu , jj , yy]
#想要输入多个序列,需要支持多个参数的函数,注意的是各序列的长度必须一样,否则报错:
def add(x,y):返回x y
.
地图(添加, zhoujy , Python )
[zP , hy , ot , uh , jo , yn]
def add(x,y,z):return x y z
.
地图(添加, zhoujy , Python , test) #test 的长度比其他2个小
回溯(最近一次呼叫):
模块中文件性病的第一行
TypeError: add()正好接受2个参数(给定了3个)
地图(添加, zhoujy , Python , testop )
[zPt , hye , ots , uht , joo , ynp]
二:减少
减少(.)
减少(函数,序列[,初始值]) -值
说明:
对顺序中的项目顺序迭代调用功能,函数必须要有2个参数。要是有第3个参数,则表示初始值,可以继续调用初始值,返回一个值。
例子:
def add(x,y):返回x y
.
reduce(add,range(10)) #1 2 3.9
45
reduce(add,range(11)) #1 2 3.10
55
reduce(x,y:x*y,range(1,3,5)#函数,5是初始值, 1*2*5
10
reduce(x,y:x*y,range(1,6)) #阶乘,1*2*3*4*5
120
reduce(lambda x,y:x*y,range(1,6),3) #初始值3,结果再*3
360
reduce(lambda x,y:x y,[1,2,3,4,5,6]) #1 2 3 4 5 6
21
三:过滤器
过滤器(.)
过滤器(函数或无,序列)-列表、元组或字符串
说明:
对顺序中的项目依次执行功能(项目),将执行结果为真(!=0)的项目组成一个列表/字符串/元组(取决于顺序的类型)返回,假的则退出(0),进行过滤。
例子:
定义分区(n):返回n%2
.
过滤器(分度,范围(5)) #返回差异输出的不等于0的真值
[1, 3]
过滤器(分度,范围(10))
[1, 3, 5, 7, 9]
过滤器(x:x % 2,范围(10))#函数返回奇数,返回列表
[1, 3, 5, 7, 9]
过滤器(x:不是x%2,范围(10))
[0, 2, 4, 6, 8]
定义fin(n):返回n!=z #过滤z 函数,出现z则返回错误的
.
过滤器(fin, zhoujy) #z 被过滤
胡伊
过滤器(x:x!=z , zhoujy) #labmda返回真实的值
胡伊
filter(lambda x : not x==z , zhoujy) #返回:字符串
胡伊
上面的这些例子中都用到了一个希腊字母的第11个表达式,下面举个例子,更多信息见这里。
a=x:x ^ 3
答(2)
5
a=x,y:x y
答(2,3)
5
四,应用映射、减少、过滤
1):实现5!4!3!2!1!
#!/usr/bin/env python
#-*-编码:utf-8 -*-
def add_factorial(n):
empty_list=[] #声明一个空列表,存各个阶乘的结果,方便这些结果相加
对于映射中的I(x:x ^ 1,距离(n)): #用传进来的变量(名词)来生成一个列表,用地图让列表都1,例如:范围(5)=[1,2,3,4,5]
a=reduce(x,y:x*y,map(x:x 1,range(i))) #生成阶乘,用地图去掉列表中的0
empty_list.append(a) #把阶乘结果附加到空的列表中
返回空列表
if __name__==__main__ :
导入系统
#2选一
#(一)
尝试:
n=输入(输入一个数字(int):)
结果=add _阶乘(n) #传入变量
print reduce(x,y:x y,结果)#阶乘结果相加
除外(名称错误,类型错误):
打印"那不是一个数字!"
#(二)
# result=add _ factorial(int(sys .argv[1])#传入变量
# print reduce(lambda x,y:x y,result) #阶乘结果相加
结果:
周jy @周jy:~/桌面/Python/4$ python factorial.py
输入一个数字(整数):1
一
周jy @周jy:~/桌面/Python/4$ python factorial.py
输入一个数字(整数):2
3
周jy @周jy:~/桌面/Python/4$ python factorial.py
输入一个数字(整数):3
9
Zhou jy @ Zhou jy:~/desktop/Python/4 $ Python factorial . py
输入一个数字(整数):4
33
Zhou jy @ Zhou jy:~/desktop/Python/4 $ Python factorial . py
输入一个数字(整数):5
153
Zhou jy @ Zhou jy:~/desktop/Python/4 $
2):选择100~200以内的质数。
想法:
质数是指只有1和它的两个因子如2、3、5、7是质数,即能被1和它本身整除,1不是质数。
比如一个数N是素数,就要看[2,n]之间的数X是否可整除(不包括自身),也就是N%X是否为0,如果不是,就是素数。
所以我们要实现的算法是:取一个数N,将数X除以[2,n]得到素数,即:N/2,N/3,…,N/N-2,n/n-N/N-1===N/range(2 (2,N)
#!/usr/bin/env python
#-*-编码:utf-8 -*-
def is_prime(开始,停止):
Stop=stop 1 #包含列表右侧的值
prime=filter(lambda x:not[x % I for I in range(2,x) if x% I==0],range (start,stop)) #取出素数,x是从range(start,stop)中取出的数
打印主要内容
if __name__==__main__ :
尝试:
start=input(输入起始数字:)
除了:
Start=2 #默认的起始值是2
尝试:
停止=输入(输入停止编号:)
除了:
Stop=0 #停止次数,默认为0,即不返回值。
is_prime(开始,停止)
结果:
Zhou jy @ Zhou jy:~/desktop/Python/4 $ Python prime . py
输入起始号码:
输入停靠站编号:10
[2, 3, 5, 7]
Zhou jy @ Zhou jy:~/desktop/Python/4 $ Python prime . py
输入起始数字:10
输入停靠站编号:20
[11, 13, 17, 19]
Zhou jy @ Zhou jy:~/desktop/Python/4 $ Python prime . py
输入起始号码:
输入站点编号:
[]
以上说完了!
~~~~~~~~~~~~~~~
在所有的事物中,希望是最美丽的
~~~~~~~~~~~~~~~
转载请联系作者获得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。