Python ——模块

 2023-09-07 阅读 24 评论 0

摘要:目录一、偏函数二、随机数2.1 random()2.2 uniform(x,y)2.3 randint(x,y)2.4 random.randrange(start,end,step)2.5 choice(sequence)2.6 shuffle(x)2.7 sample(sequence,k)三、MapReduce处理3.1 filter(function,sequence)3.2 map(function.sequence)3.3 reduce(function,se

目录

  • 一、偏函数
  • 二、随机数
    • 2.1 random()
    • 2.2 uniform(x,y)
    • 2.3 randint(x,y)
    • 2.4 random.randrange(start,end,step)
    • 2.5 choice(sequence)
    • 2.6 shuffle(x)
    • 2.7 sample(sequence,k)
  • 三、MapReduce处理
    • 3.1 filter(function,sequence)
    • 3.2 map(function.sequence)
    • 3.3 reduce(function,sequence)

一、偏函数

在函数执行时需要根据函数的要求传递相应参数,而后才可以得到所需要的计算结果。例如,现在有一个加法计算的函数,传统的调用如下:

def add(a,b,c=2):return a+b+cadd(100,200)
add(100,200,300)

此时程序根据add()函数的定义要求传入参数并实现了加法的计算,但是假设在某些操作代码中,如果add()函数中参数a和b的内容为已知固定内容,并且要根据需要动态接收参数c时,就可以利用偏函数对已有函数进行包装,从而减少函数调用时的参数传递。如果想要定义偏函数,则必须导入functools.partial模块。

下面举个偏函数例子:

from functools import partialdef add(a,b,c=2):return a + b + cplus = partial(add,100,200)
print(plus())
print(plus(20))

使用偏函数重新封装之后就可以减少函数调用时所传递的参数个数,对于一些参数较长的函数使用偏函数会降低函数的使用难度。

二、随机数

Python提供了random模块,利用此模块可以生成随机数,或者根据给定的序列数据进行随机抽取。

2.1 random()

random()随机生成一个0~1的随机浮点数。

import random
a = random.random()

2.2 uniform(x,y)

生成一个在指定范围内的随机浮点数,如果x>yx>yx>y,则生成随机数n,且n满足y<=n<=xy<=n<=xy<=n<=x。如果x<yx<yx<y,则n满足x<=n<=yx<=n<=yx<=n<=y

import random
a = random.uniform(5,3)
b = random.uniform(3,5)

2.3 randint(x,y)

生成一个指定范围内的随机整数,x<=n<=yx<=n<=yx<=n<=y,注意这里必须x小于等于y。

import random
a = random.randint(3,5)

2.4 random.randrange(start,end,step)

从指定范围内,按照step递增数据,并从里面抽取随机数。

import random
a = random.randrange(1,6,2)

2.5 choice(sequence)

从序列中随机抽取数据。

import random
a = random.choice([1,2,3,4,5])

2.6 shuffle(x)

将一个列表中的元素打乱。

import random
a = [1,2,3,4,5]
random.shuffle(a)

2.7 sample(sequence,k)

从指定序列中随机获得指定序列分片。

import random
a = [1,2,3,4,5,6,7,8,9,10]
b = random.sample(a,3)

三、MapReduce处理

Python序列可以实现多个相关数据的存储,在很多时候对于存储在序列中的数据往往都需要进行过滤、处理以及分析操作,在数据量小的情况下,开发者可以直接使用for循环与判断的模型处理,但是在数据量较大的情况下,为了可以快速地获取数据统计结果,就可以利用Python中提供的以下三个函数来处理:

3.1 filter(function,sequence)

对传入的序列数据进行过滤;

3.2 map(function.sequence)

对传入的序列数据进行处理;

3.3 reduce(function,sequence)

对传入的序列数据进行统计;

以上三个函数往往都会与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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/12740.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息