欢迎光临
我们一直在努力

Python double你的代码效率?Toolz库让函数式编程爽到飞起

 它是一种有着多种用途的编程语言, 有着广泛的库还有框架, 用来支持各类编程形式包括面向对象编程、过程式编程以及函数式编程, 函数式编程是一种关键的编程形式, 它着重强调函数的不变特性和没有副作用, 能够辅助开发人员编写出更为干净、可维护以及可测试的代码, 其中的Toolz库是一个强大的工具, 用于支持函数式编程的实践, 此文将会介绍怎样借助Toolz来简化函数用编程。

什么是Toolz?

Toolz是个库, 其目的在于简化函数式编程的实践活动 , 它给出了一群功能强大的工具 , 这些工具可用于对付迭代器 、序列 、字典以及别的数据结构 , 以此来支撑函数式编程所蕴含的思想 , Toolz库的目标是要让函数式编程变得越发容易且直观 , 而用不着复杂的代码或者数量众多的样板代码。

安装Toolz

要开始使用Toolz,首先需要安装它。

可以使用pip来安装Toolz,只需运行以下命令:

pip install toolz

安装完成后,就可以开始在项目中使用Toolz库了。

基本用法

以若干具有基础性性质的Toolz功用起始, 借此去明晰怎样运用其来让函数式编程得以简化。

1. 高阶函数

Toolz库给出了好多高阶函数, 这些函数把别的函数当作参数来接收, 或者返回函数。

例如,map函数可以将一个函数应用于迭代器中的每个元素:

from toolz import map
# 定义一个函数
def square(x):
return x ** 2
# 创建一个迭代器
data = [1, 2, 3, 4, 5]
# 使用map将函数应用于每个元素
result = list(map(square, data))
print(result) # 输出:[1, 4, 9, 16, 25]

python double_Toolz 高阶函数 过滤器 组合_Python函数式编程 Toolz库 使用教程

于上述示例里头, 界定了一个函数, 接着运用map函数把该函数施加于数据列表里的每一个元素。这属于一种典型的函数式编程样式。

2. 过滤器

Toolz库给出了函数, 这个函数是用来在迭代器里头对元素进行过滤的, 仅留下那些符合特定条件的元素:

from toolz import filter
# 定义一个函数,用于检查奇数
def is_odd(x):
return x % 2 != 0
# 创建一个迭代器
data = [1, 2, 3, 4, 5]
# 使用filter过滤奇数
result = list(filter(is_odd, data))
print(result) # 输出:[1, 3, 5]

在上述示例子之中, 定义了一个函数, 该函数是用来检查一个数字是不是奇数的。接着, 运用函数去滤选出奇数。

3. 函数组合

函数式编程里有至关重要的一个概念, 那就是函数组合, 它能够让多个函数被组合到一块儿, 借此创建更为复杂的功能, 呐。

Toolz库提供了函数,用于将多个函数组合成一个新的函数:

from toolz import compose
# 定义两个简单的函数
def add(x, y):
return x + y
def square(x):
return x ** 2
# 使用compose将这两个函数组合
composed_function = compose(square, add)
# 调用组合函数
result = composed_function(2, 3)
print(result) # 输出:25,等价于 square(add(2, 3))

在上一示例里头, 对两个函数add于此处做出了定义, 接着运用函数把它们给组合成一个新型函数,此二者是等价的, 即(add(2, 3))。

4. 计算管道

有一个名为Toolz库的地方, 它给出了pipe函数, 存在这样一种情况, 即它能让多个函数依照顺序组合成一个计算管道, 这种情况在处理数据流期间是极为有用的, 借助此情况能够书写出具备清晰结构的代码:

from toolz import pipe
# 定义一系列函数
def add(x, y):
return x + y
def square(x):
return x ** 2
def double(x):
return x * 2
# 创建一个计算管道
calculation_pipeline = pipe(add, square, double)
# 使用计算管道进行计算
result = calculation_pipeline(2, 3)
print(result) # 输出:50,等价于 double(square(add(2, 3)))

Python函数式编程 Toolz库 使用教程_Toolz 高阶函数 过滤器 组合_python double

在上述所提及的示例当中, 定义了三个函数, 分别是add、和, 而后运用pipe函数以按顺序的方式将它们组合成为一个计算管道。

Toolz的更多功能和选项

剔除上面所阐述的基础用法之外, Toolz另外还供应了诸多别的功效以及选择: 。

示例:使用Toolz解决实际问题

借助一个示例, 去呈现怎样运用Toolz对实际问题予以解决。假定存在一个存有学生分数的字典, 期望算出每个学生的平均分。

可以使用Toolz来简化这个任务:

from toolz import groupby, valfilter, pipe
# 学生分数字典
scores = {
'Alice': [85, 90, 92],
'Bob': [88, 89, 86],
'Charlie': [90, 92, 88]
}
# 计算每个学生的平均分
average_scores = pipe(
scores,
groupby(lambda x: x[0]),
valfilter(lambda x: len(x) > 0),
valfilter(lambda x: all(isinstance(i, int) for i in x)),
valfilter(lambda x: all(0 <= i <= 100 for i in x)),
valfilter(lambda x: sum(x) / len(x) >= 60),
valfilter(lambda x: len(x) > 2),
valfilter(lambda x: sum(x) > 200),
valfilter(lambda x: sum(x) / len(x) > 80),
valfilter(lambda x: all(i > 85 for i in x)),
)
print(average_scores)

在该示例里头, 运用Toolz的一连串函数去处理学生分数字典。先是借助函数依照学生姓名予以分组, 接着利用函数开展一系列过滤行动, 最终获取符合特定条件的学生的平均分。

总结

Toolz是个强大的库, 它是用来简化函数式编程实践的, 它提供了一组功能强大的工具, 这些工具是用于操作数据结构的, 是用于函数组合的, 是用于计算管道的, 借助这些能让函数式编程变得更易且直观, 通过学习并掌握Toolz, 能够编写更干净、可维护且可测试的代码, 同时还能充分利用函数式编程的优势, 不管是函数式编程新手, 还是有经验的开发人员, Toolz都值得大家深入学习与探索。

要是你觉着那章内容还挺好的话, 就麻烦大伙去点一下赞这个动作了、进行一下分享此类行为、留下一些话语作留言这个举动, 毕竟这可会成为我一直不断地去产出更多质量优良好文章的最为强大有力的推动力量!CDED.EAsyClAsS321.CoM
748.EAsyClAsS321.CoM
08BC.EAsyClAsS321.CoM
6F0.EAsyClAsS321.CoM
D91.EAsyClAsS321.CoM
FD30.EAsyClAsS321.CoM
DF2.EAsyClAsS321.CoM
E049.EAsyClAsS321.CoM
3A5.EAsyClAsS321.CoM
8FC.EAsyClAsS321.CoM
80F7.EAsyClAsS321.CoM
7D7.EAsyClAsS321.CoM
F1E9.EAsyClAsS321.CoM
8376.EAsyClAsS321.CoM
16B1.EAsyClAsS321.CoM
B268.EAsyClAsS321.CoM
3FF7.EAsyClAsS321.CoM
9FA3.EAsyClAsS321.CoM
122D.EAsyClAsS321.CoM
80F.EAsyClAsS321.CoM
F0A.EAsyClAsS321.CoM
BC50.EAsyClAsS321.CoM
2625.EAsyClAsS321.CoM
21AA.EAsyClAsS321.CoM
4842.EAsyClAsS321.CoM
13E.EAsyClAsS321.CoM
0C60.EAsyClAsS321.CoM
7A0.EAsyClAsS321.CoM
876.EAsyClAsS321.CoM
9FA.EAsyClAsS321.CoM
DDF7.EAsyClAsS321.CoM
4551.EAsyClAsS321.CoM
581.EAsyClAsS321.CoM
8430.EAsyClAsS321.CoM
607.EAsyClAsS321.CoM
9DB2.EAsyClAsS321.CoM
1FED.EAsyClAsS321.CoM
902.EAsyClAsS321.CoM
F4A2.EAsyClAsS321.CoM
F2CA.EAsyClAsS321.CoM
B941.EAsyClAsS321.CoM
25AB.EAsyClAsS321.CoM
9E4.EAsyClAsS321.CoM
BF24.EAsyClAsS321.CoM
9234.EAsyClAsS321.CoM
3100.EAsyClAsS321.CoM
FBF.EAsyClAsS321.CoM
2F68.EAsyClAsS321.CoM
A216.EAsyClAsS321.CoM
A5E.EAsyClAsS321.CoM
7C33.EAsyClAsS321.CoM
785.EAsyClAsS321.CoM
320.EAsyClAsS321.CoM
742.EAsyClAsS321.CoM
684E.EAsyClAsS321.CoM
5B1A.EAsyClAsS321.CoM
F39B.EAsyClAsS321.CoM
5F6.EAsyClAsS321.CoM
E003.EAsyClAsS321.CoM
C0CA.EAsyClAsS321.CoM
DFF.EAsyClAsS321.CoM
4A96.EAsyClAsS321.CoM
543.EAsyClAsS321.CoM
14FF.EAsyClAsS321.CoM
AF8E.EAsyClAsS321.CoM
783E.EAsyClAsS321.CoM
D36A.EAsyClAsS321.CoM
5CA.EAsyClAsS321.CoM
F12.EAsyClAsS321.CoM
5921.EAsyClAsS321.CoM
CF6.EAsyClAsS321.CoM
579.EAsyClAsS321.CoM
4762.EAsyClAsS321.CoM
4E9.EAsyClAsS321.CoM
71E.EAsyClAsS321.CoM
B78.EAsyClAsS321.CoM
8069.EAsyClAsS321.CoM
F78.EAsyClAsS321.CoM
F4BB.EAsyClAsS321.CoM
52C.EAsyClAsS321.CoM
D4D5.EAsyClAsS321.CoM
FDC.EAsyClAsS321.CoM
7319.EAsyClAsS321.CoM
314F.EAsyClAsS321.CoM
895.EAsyClAsS321.CoM
7BB8.EAsyClAsS321.CoM
3C5.EAsyClAsS321.CoM
9D66.EAsyClAsS321.CoM
371.EAsyClAsS321.CoM
B103.EAsyClAsS321.CoM
0FD9.EAsyClAsS321.CoM
618.EAsyClAsS321.CoM
446D.EAsyClAsS321.CoM
0A6.EAsyClAsS321.CoM
EAF1.EAsyClAsS321.CoM
D26.EAsyClAsS321.CoM
914B.EAsyClAsS321.CoM
93C1.EAsyClAsS321.CoM
CF3.EAsyClAsS321.CoM
52B.EAsyClAsS321.CoM
F49D.EAsyClAsS321.CoM
C3E.EAsyClAsS321.CoM
2011.EAsyClAsS321.CoM
73C.EAsyClAsS321.CoM
39D6.EAsyClAsS321.CoM
A31.EAsyClAsS321.CoM
3E8.EAsyClAsS321.CoM
804F.EAsyClAsS321.CoM
404.EAsyClAsS321.CoM
CE12.EAsyClAsS321.CoM
B8E.EAsyClAsS321.CoM
046B.EAsyClAsS321.CoM
A0E.EAsyClAsS321.CoM
3131.EAsyClAsS321.CoM
3399.EAsyClAsS321.CoM
A0A.EAsyClAsS321.CoM
0C9.EAsyClAsS321.CoM
FD6A.EAsyClAsS321.CoM
DF88.EAsyClAsS321.CoM
51D.EAsyClAsS321.CoM
39B3.EAsyClAsS321.CoM
9631.EAsyClAsS321.CoM
7E5B.EAsyClAsS321.CoM
6AE.EAsyClAsS321.CoM
A092.EAsyClAsS321.CoM
704B.EAsyClAsS321.CoM
88F.EAsyClAsS321.CoM
09E.EAsyClAsS321.CoM
9BA.EAsyClAsS321.CoM
0042.EAsyClAsS321.CoM
5BE.EAsyClAsS321.CoM
BF4E.EAsyClAsS321.CoM
828.EAsyClAsS321.CoM
B37.EAsyClAsS321.CoM
C3B3.EAsyClAsS321.CoM
0BD3.EAsyClAsS321.CoM
7721.EAsyClAsS321.CoM
882.EAsyClAsS321.CoM
B14.EAsyClAsS321.CoM
AD4.EAsyClAsS321.CoM
5ED2.EAsyClAsS321.CoM
494B.EAsyClAsS321.CoM
B795.EAsyClAsS321.CoM
A1B9.EAsyClAsS321.CoM
2738.EAsyClAsS321.CoM
F78B.EAsyClAsS321.CoM
4F5D.EAsyClAsS321.CoM
9563.EAsyClAsS321.CoM
2EB.EAsyClAsS321.CoM
4C40.EAsyClAsS321.CoM
7077.EAsyClAsS321.CoM
307.EAsyClAsS321.CoM
A78.EAsyClAsS321.CoM
231.EAsyClAsS321.CoM
8824.EAsyClAsS321.CoM
E422.EAsyClAsS321.CoM
0CB.EAsyClAsS321.CoM
A629.EAsyClAsS321.CoM
F445.EAsyClAsS321.CoM
BEE1.EAsyClAsS321.CoM
675.EAsyClAsS321.CoM
36C5.EAsyClAsS321.CoM
B4F6.EAsyClAsS321.CoM
2366.EAsyClAsS321.CoM
5627.EAsyClAsS321.CoM
7AAB.EAsyClAsS321.CoM
E869.EAsyClAsS321.CoM
267.EAsyClAsS321.CoM
E626.EAsyClAsS321.CoM
0FD.EAsyClAsS321.CoM
C026.EAsyClAsS321.CoM
115.EAsyClAsS321.CoM
626.EAsyClAsS321.CoM
499.EAsyClAsS321.CoM
4E45.EAsyClAsS321.CoM
661.EAsyClAsS321.CoM
01ED.EAsyClAsS321.CoM
6BD9.EAsyClAsS321.CoM
988C.EAsyClAsS321.CoM
2318.EAsyClAsS321.CoM
A54A.EAsyClAsS321.CoM
5C9.EAsyClAsS321.CoM
B58.EAsyClAsS321.CoM
480.EAsyClAsS321.CoM
AADB.EAsyClAsS321.CoM
FFA.EAsyClAsS321.CoM
C0B5.EAsyClAsS321.CoM
864.EAsyClAsS321.CoM
A990.EAsyClAsS321.CoM
6923.EAsyClAsS321.CoM
ADA.EAsyClAsS321.CoM
C09A.EAsyClAsS321.CoM
C2A.EAsyClAsS321.CoM
F7F4.EAsyClAsS321.CoM
6691.EAsyClAsS321.CoM
B68.EAsyClAsS321.CoM
6091.EAsyClAsS321.CoM
A718.EAsyClAsS321.CoM
0E57.EAsyClAsS321.CoM
E466.EAsyClAsS321.CoM
3C8.EAsyClAsS321.CoM
9C5D.EAsyClAsS321.CoM
3A91.EAsyClAsS321.CoM
050B.EAsyClAsS321.CoM
EFC.EAsyClAsS321.CoM
3E91.EAsyClAsS321.CoM
3A3E.EAsyClAsS321.CoM
7397.EAsyClAsS321.CoM
8B2B.EAsyClAsS321.CoM
3DAB.EAsyClAsS321.CoM
3AD.EAsyClAsS321.CoM
18A.EAsyClAsS321.CoM
B99.EAsyClAsS321.CoM
CE18.EAsyClAsS321.CoM
64BE.EAsyClAsS321.CoM
14C3.EAsyClAsS321.CoM
4469.EAsyClAsS321.CoM
77E3.EAsyClAsS321.CoM
15C.EAsyClAsS321.CoM
E4FA.EAsyClAsS321.CoM
6DC3.EAsyClAsS321.CoM
3AD0.EAsyClAsS321.CoM
3D32.EAsyClAsS321.CoM
FDA7.EAsyClAsS321.CoM
82C.EAsyClAsS321.CoM
204.EAsyClAsS321.CoM
634.EAsyClAsS321.CoM
A024.EAsyClAsS321.CoM
C82.EAsyClAsS321.CoM
EB1.EAsyClAsS321.CoM
F6D9.EAsyClAsS321.CoM
E9C.EAsyClAsS321.CoM
C23.EAsyClAsS321.CoM
223.EAsyClAsS321.CoM
416.EAsyClAsS321.CoM
B5A7.EAsyClAsS321.CoM
DAB3.EAsyClAsS321.CoM
D68C.EAsyClAsS321.CoM
45AA.EAsyClAsS321.CoM
3BA0.EAsyClAsS321.CoM
622C.EAsyClAsS321.CoM
5CAE.EAsyClAsS321.CoM
7FC0.EAsyClAsS321.CoM
165.EAsyClAsS321.CoM
697.EAsyClAsS321.CoM
EE9E.EAsyClAsS321.CoM
28C5.EAsyClAsS321.CoM
68DE.EAsyClAsS321.CoM
F7DC.EAsyClAsS321.CoM
FC4.EAsyClAsS321.CoM
75CA.EAsyClAsS321.CoM
4AC6.EAsyClAsS321.CoM
0A40.EAsyClAsS321.CoM
745F.EAsyClAsS321.CoM
49C5.EAsyClAsS321.CoM
1BEF.EAsyClAsS321.CoM
E55.EAsyClAsS321.CoM
A4D4.EAsyClAsS321.CoM
BC5A.EAsyClAsS321.CoM
0006.EAsyClAsS321.CoM
7647.EAsyClAsS321.CoM
8448.EAsyClAsS321.CoM
5AAA.EAsyClAsS321.CoM
F986.EAsyClAsS321.CoM
09F9.EAsyClAsS321.CoM
127.EAsyClAsS321.CoM
388B.EAsyClAsS321.CoM
DC48.EAsyClAsS321.CoM
4FC.EAsyClAsS321.CoM
F068.EAsyClAsS321.CoM
728A.EAsyClAsS321.CoM
D848.EAsyClAsS321.CoM
EC90.EAsyClAsS321.CoM
5FCB.EAsyClAsS321.CoM
CB1.EAsyClAsS321.CoM
5D4.EAsyClAsS321.CoM
59EF.EAsyClAsS321.CoM
D6BC.EAsyClAsS321.CoM
CFE2.EAsyClAsS321.CoM
FEE.EAsyClAsS321.CoM
1C5.EAsyClAsS321.CoM
38B.EAsyClAsS321.CoM
BC1.EAsyClAsS321.CoM
134.EAsyClAsS321.CoM
42CC.EAsyClAsS321.CoM
0BB.EAsyClAsS321.CoM
DAC1.EAsyClAsS321.CoM
5099.EAsyClAsS321.CoM
4808.EAsyClAsS321.CoM
86FA.EAsyClAsS321.CoM
FB6.EAsyClAsS321.CoM
7872.EAsyClAsS321.CoM
4B6E.EAsyClAsS321.CoM
B140.EAsyClAsS321.CoM
E0C.EAsyClAsS321.CoM
5B28.EAsyClAsS321.CoM
F96.EAsyClAsS321.CoM

赞(0)
未经允许不得转载:171主机测评 » Python double你的代码效率?Toolz库让函数式编程爽到飞起
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址