Python Toolz 模块2024 年 8 月 29 日 | 阅读 15 分钟 在本教程中,我们将学习 toolz 模块、它的功能以及如何用它来解决复杂的编程语言问题。 Toolz 包提供了许多用于处理列表、函数和字典的函数。它为 Python 的常规库 itertools 和 functools 提供的功能添加了更多特性。Toolz 模块可以帮助您更有效地处理代码和数据。 此模块包含以下五个子模块 -
让我们来了解一下这些模块 - Dicttoolzdicttoolz 是 Toolz 包中的一个模块,它专门提供用于处理 Python 字典的实用函数。它提供了各种有用的函数,允许您以更有效和便捷的方式操作和交互字典。这些函数扩展了内置字典操作的功能,并提供了附加功能,使处理字典更加容易。 让我们来了解以下函数 -
示例 输出 Original Dictionary: {'Java': 0} New Dictionary: {'Java': 0, 'Tpoint': 1}
示例 输出 Original Dictionary: {'Java': 0} New Dictionary: {'Java': 0, 'Tpoint': 1}
示例 输出 {'P': 0, 't': 2, 'r':4}
示例 输出 v2 v4
示例 输出 v2 v4
示例 输出 {'A': 0, 'B': 1, 'C': 3, 'F': 5}
示例 输出 {'': 0, 'julia': 1}
示例 - 输出 {'': 0, 'JULIA': 1, 'JAVA': 3, 'JAVASCRIPT': 5}
示例 - 输出 {1: 1, 2: 8, 3: 9, 4: 16}
示例 - 输出 {1: 2, 2: 12, 3: 9}
示例 - 输出 {1: {11: 55}, 2: {22: 222}}
示例 - 输出 {0: '', 1: 'julia'}
示例 - 输出 {0: '', 1: 'JULIA', 3: 'JAVA', 5: 'JAVASCRIPT'} Functoolzfunctoolz 是一个 Python 库,它提供了一系列用于处理函数和可调用对象的实用函数。它通过提供额外的函数来扩展内置 functools 模块的功能,这些函数在函数式编程和数据处理任务中非常有用。 toolz 扩展了 itertools 和 functools 等标准库的功能,而 functoolz 则通过添加函数式编程和数据处理中常见的更多功能来扩展内置的 functools 模块。 该库包含各种函数,可用于组合、柯里化和操作函数等。它提供了一套工具,可以以更函数式、更简洁的方式处理函数,从而实现更清晰、更具表现力的代码。 函数
示例 - 输出 25
示例 - 输出 False True 解释 - 在上面的示例中,complement() 函数用于创建一个新函数 `not_divisible_by_3`,该函数返回 `is_divisible_by_3()` 的相反结果。这使您可以根据需要轻松地切换函数的输出。
示例 - 输出 18 解释 - 在示例中,compose() 函数将 double() 和 square() 函数组合起来创建一个新函数。当将此组合函数应用于值 3 时,它首先将其加倍到 6,然后将其平方,得到最终结果 18。
示例 - 输出 18 解释 - 在示例中,compose_left() 函数将 double() 和 square() 函数组合起来创建一个新函数。当将此组合函数应用于值 3 时,它首先将其平方到 9,然后将其加倍,得到最终结果 18。
示例 输出 2.0 解释 - 在示例中,flip() 函数用于反转调用 `divide()` 函数时参数的顺序。不是 4 / 8,而是 8 / 4,结果商为 `2.0`。
示例 - 输出 6 toolz 包中的 pipe() 函数允许您将一个值按顺序通过一系列函数。这类似于从左到右应用一系列函数。让我们来了解下面的示例 - 示例 - 输出 36 在给定的示例中,使用 pipe() 函数,值 3 首先加倍到 6,然后平方,得到最终结果 36。
示例 - 输出 36 在给定的示例中,使用 pipe() 函数,值 3 首先加倍到 6,然后平方,得到最终结果 36。
示例 - 输出 4 解释 - 在此提供的示例中,值 3 首先应用于带有参数 2 的 `mod` 函数,生成输出 1。接下来,使用 double() 函数将输出 1 加倍,通过 thread_last() 得到最终输出 `4`。 Itertoolzitertoolz 是一个 Python 库,它提供了一组用于处理迭代器和可迭代对象的实用函数。它旨在扩展和增强内置 `itertools` 模块的功能,提供用于常见数据处理任务的附加函数。该库是 `toolz` 生态系统的一部分,该生态系统旨在为 Python 中的函数式编程和数据处理提供各种实用程序。 它提供了允许您高效地对列表、元组、生成器等可迭代对象执行操作的函数。这些函数使您能够使用函数式编程范例来组合复杂的数据转换和操作,从而使您的代码更具可读性和可维护性。 该库包含用于过滤、映射、分组和转换可迭代对象内数据的常见任务的函数。通过使用 itertoolz,您可以编写遵循函数式编程原则的代码,从而实现更模块化的代码。 函数
示例 - 输出 [1, 'a', 2, 3, 4] 在此示例中,concat() 函数接受三个列表,并创建一个包含所有元素的新列表,保持其原始顺序。生成的列表 `[1, 'a', 2, 3, 4]` 包含来自所有三个输入列表的元素。
让我们理解以下示例 - 示例 - 输出 [(1, 2), (3, 4)] 在此示例中,diff() 函数会检查序列 `[1, 2, 3]` 和 `[2, 2, 4]` 中相同索引处的元素。随后,它会组合对,例如 `(1, 2)` 和 `(3, 4)`,以表示这些相应位置的不同元素。
示例 - 输出 [6, 4, 7] 在此示例中,`drop` 函数从提供的序列 [2, 3, 2, 6, 4, 7] 中省略前三个元素,得到修改后的序列 [6, 4, 7]。
示例 - 输出 {'c': 2, 'b': 3, 'd': 1, 'e': 1, 'h': 2} 在此示例中,**frequencies()** 函数会检查提供的序列中的元素,并构建一个字典,显示每个元素的出现次数和计数。
示例 - 输出 {5: ['geeks', 'geeks'], 3: ['for']} 在此示例中,**groupby()** 函数将 `len` 函数应用于序列中的每个元素。然后它形成一个字典,其中键代表元素的长度,相应的值是包含该长度的元素列表。
示例 - 输出 {5: ['geeks', 'geeks'], 3: ['for']}
示例 输出 True 在此示例中,该函数检查列表 my_list 是否可迭代。由于列表是可迭代对象,因此该函数返回 `True`。
示例 输出 [10, 5, 20, 8, 11] 在此示例中,该函数交错序列 `[10, 20]` 和 `[5, 8, 11]` 的元素,得到 `[10, 5, 20, 8, 11]`。
示例 - 输出 [95, 92, 90] 在此示例中,topk() 函数从列表 [95, 85, 75, 90, 88, 92] 中提取三个最高分,得到输出 [95, 92, 90]。 unique(seq[, key]) - 此函数检索并返回序列中的唯一元素,类似于 set() 函数的操作方式。让我们来了解下面的示例。 示例 - 输出 ['red', 'blue', 'green', 'yellow'] 在此示例中,`unique` 函数从列表 `['red', 'blue', 'green', 'blue', 'yellow', 'red']` 中滤除了重复元素,得到输出 `['red', 'blue', 'green', 'yellow']`。
示例 - 输出 [1, 3, 4, 6, 8, 9, 10, 13, 15, 17, 18, 22] 在此示例中,`merge_sorted` 函数将已排序的列表 `list1`、`list2` 和 `list3` 合并创建一个已排序的列表 merged_sorted(),其中包含所有元素,按升序排列。
示例 - 输出 [6, 14, 20, 10, 16, 24] 在此示例中,`mapcat` 函数将 `double_elements()` 函数应用于输入列表 `list1` 和 `list2`。然后将结果连接到最终的 `result` 列表中。 remove(predicate, seq) - 此函数返回序列中谓词函数返回 False 的元素。可以将其视为 `filter` 函数的补集函数。 示例 - 输出 [9, 15, 7] 在此示例中,`remove` 函数将 `is_even` 谓词函数应用于 `numbers` 列表中的每个元素。谓词返回 False 的元素包含在最终的 `result` 列表中。 Recipes recipes 指的是一系列常用的函数和工作流程,它们能为各种编程任务提供高效简洁的解决方案。这些 recipes 旨在帮助您以更流畅、更函数式的方式处理迭代器、序列和数据处理。它们利用 toolz 模块提供的函数和实用程序来实现特定目标。
示例 - 输出 {True: 3, False: 3} 解释 - 在此示例中,`countby` 函数根据数字是否为素数来对列表中的数字进行分类。生成的字典表明给定的列表中有 3 个素数和 3 个非素数。
它允许您根据选定的函数将序列划分为子组。它将满足给定函数标准的连续元素聚集成簇。让我们来了解下面的示例。 示例 - 输出 [(3,), (8, 11), (20,), (23,), (30,), (37,)] 解释 - 在此示例中,partitionby() 函数将数字列表分割成组,其中连续的数字具有相同的素数状态。生成的元组列表显示了每个组中的数字,基于它们是否为素数。 Sandboxsandbox 用于一个上下文或环境,您可以在其中尝试 toolz 库提供的各种函数、实用程序和 recipes。这个概念与 toolz 所倡导的函数式编程范例一致。 Functions -
示例 - 输出 24
示例 - 输出 (10, 20, 15) ('apple', 'banana', 'orange') 结论toolz 模块是一个强大而通用的模块,它扩展了 Python 内置工具的功能。它提供了一系列函数和 recipes,旨在简化常见的编程任务,例如处理序列、字典和函数式编程构造。该模块分为几个子模块,每个子模块处理数据处理和计算的不同方面。 |
我们请求您订阅我们的新闻通讯以获取最新更新。