python提供了内联模块buidin,该模块定义了一些软件开发中常用的函数,这些函数实现了数据类型的转换, 数据的计算, 序列的处理等功能。 下面介绍内联模块中常用的四个内联函数。
(1)apply()
功能: apply()是实现调用可变参数列表的函数,把参数列表存放在一个元组或者列表中.
声明格式:
apply(func, [argc[, kwargs]])
说明:
(1)func是自定义的函数名称。
(2)参数argc是一个自定义的函数参数的列表或者元组,若argc被省略则表示被执行的函数没有任何参数
(3)参数kwargs是一个字典,字典的key值是参数的参数名称,value是实际的参数值。
(4)apply的返回值就是func的返回值
应用举例:
#定义了sun,并定义了形式参数
def sum(x=1, y=2):
return x + y
#通过调用sum输出为4
print apply(sum, (1, 3))
(2)filter()
功能:filter()可以对某个序列做过滤处理,对自定义的函数返回的结果是否为”真“,来过滤,并一次性返回处理结果。
声明格式:
filter(func or None, sequence) -->list, tuple, or string
说明:
(1)参func数是自定义的过滤函数,在函数func中定义过滤的规则。如果func为None,则表示过滤项全部为真,返回所有的序列元素。
(2)参数sequence为待处理的序列。
(3)filter()返回的是由func()的返回值组成的序列,返回的类型和参数sequence的类型相同。
应用举例:
演示filter()的过滤功能,从给定的列表中过滤出大于零的数。
def func(x):
if x > 0:
return x
print filter(func, range(-9, 10))
注意:filter()中过滤函数func的参数不能为空,否则, 没有可以存储sequence元素的变量,func()也不能处理过滤。
(3)reduce()
功能:对序列中元素的连续操作可以通过循环来实现,reduce也可以实现连续处理的功能。
声明格式:
reduce(func, sequence[, initial])--> value
说明:
(1)参数func是自定义的函数,在函数func中实现对sequence的连续操作。
(2)参数sequence为待处理的序列。
(3)参数initial可以省略,如果initial不为空,则initial的值首先传入func进行计算,如果initial的值为空,则对initial的值进行处理。
(4)reduce的返回值是func的返回值。
应用举例:实现对一个列表中数字进行累加的操作。
def sum(x, y):
return x + y
#对0+1+2+...+9进行计算,输出结果: 45
print reduce(sum, range(0, 10))
#对10 +0+1+2+3+...+9进行计算, 输出结果:55
print reduce(sum, range(0, 10), 10)
注意:如果对reduce()进行累计计算,必须在sum中定义两个参数,分别对应加法运算两侧的操作数。
(4)map()
功能:map()的功能非常强大,可以对每个序列的每个元素执行相同的操作,并组程序列表返回。
声明格式:
map(func, sequence[, sequence]) --> list
说明:
(1)参数func是自定义的函数,实现对序列每个元素的操作
(2)参数sequence为待处理的函数,参数sequence的个数可以是多个
(3)map的返回值是处理后的列表
应用举例:
#实现参数x 的幂运算
def power(x):
return x ** x
#把1,2, 3, 4依次传入power中,计算结果组成一个列表返回,输出结果:[1, 4, 27, 256]
print map(power range(1, 5))
def power2(x, y):
return x ** y
#计算1^4, 2^4, 3^3, 4^2计算后的结果返回一个列表,输出结果:[1, 16, 27,16]
print map(power2, range(1, 5), range(5, 1, -1))
注意:如果map中提供多个序列,则每个元素意义对应进行计算,若每个序列对应的长度不同,则短的序列后补充”None“,再进行计算。
阅读(1607) | 评论(0) | 转发(0) |