在函数执行时需要根据函数的要求传递相应参数,而后才可以得到所需要的计算结果。例如,现在有一个加法计算的函数,传统的调用如下:
def add(a,b,c=2):
return a+b+c
add(100,200)
add(100,200,300)
此时程序根据add()函数的定义要求传入参数并实现了加法的计算,但是假设在某些操作代码中,如果add()函数中参数a和b的内容为已知固定内容,并且要根据需要动态接收参数c时,就可以利用偏函数对已有函数进行包装,从而减少函数调用时的参数传递。如果想要定义偏函数,则必须导入functools.partial模块。
下面举个偏函数例子:
from functools import partial
def add(a,b,c=2):
return a + b + c
plus = partial(add,100,200)
print(plus())
print(plus(20))
使用偏函数重新封装之后就可以减少函数调用时所传递的参数个数,对于一些参数较长的函数使用偏函数会降低函数的使用难度。
Python提供了random模块,利用此模块可以生成随机数,或者根据给定的序列数据进行随机抽取。
random()随机生成一个0~1的随机浮点数。
import random
a = random.random()
生成一个在指定范围内的随机浮点数,如果 x > y x>y x>y,则生成随机数n,且n满足 y < = n < = x y<=n<=x y<=n<=x。如果 x < y x
import random
a = random.uniform(5,3)
b = random.uniform(3,5)
生成一个指定范围内的随机整数, x < = n < = y x<=n<=y x<=n<=y,注意这里必须x小于等于y。
import random
a = random.randint(3,5)
从指定范围内,按照step递增数据,并从里面抽取随机数。
import random
a = random.randrange(1,6,2)
从序列中随机抽取数据。
import random
a = random.choice([1,2,3,4,5])
将一个列表中的元素打乱。
import random
a = [1,2,3,4,5]
random.shuffle(a)
从指定序列中随机获得指定序列分片。
import random
a = [1,2,3,4,5,6,7,8,9,10]
b = random.sample(a,3)
Python序列可以实现多个相关数据的存储,在很多时候对于存储在序列中的数据往往都需要进行过滤、处理以及分析操作,在数据量小的情况下,开发者可以直接使用for循环与判断的模型处理,但是在数据量较大的情况下,为了可以快速地获取数据统计结果,就可以利用Python中提供的以下三个函数来处理:
对传入的序列数据进行过滤;
对传入的序列数据进行处理;
对传入的序列数据进行统计;
以上三个函数往往都会与lambda函数联合使用。
# from random import filter
# from random import map
from functools import reduce
numbers = [1,2,3,4,5,6,7,8,9]
filter_result = list(filter(lambda item: item % 2 == 0,numbers))
print("filter()函数过滤之后的列表数据:{}".format(filter_result))
map_result = list(map(lambda item: item * 2,filter_result))
print("map()函数处理之后的列表数据:{}".format(map_result))
reduce_result = reduce(lambda x,y: x+y,map_result)
print("reduce()函数处理之后的列表数据:{}".format(reduce_result))
代码输出如下所示:
filter()函数过滤之后的列表数据:[2, 4, 6, 8]
map()函数处理之后的列表数据:[4, 8, 12, 16]
reduce()函数处理之后的列表数据:40