返回介绍

01. Python 工具

02. Python 基础

03. Numpy

04. Scipy

05. Python 进阶

06. Matplotlib

07. 使用其他语言进行扩展

08. 面向对象编程

09. Theano 基础

10. 有趣的第三方模块

11. 有用的工具

12. Pandas

operator, functools, itertools, toolz, fn, funcy 模块

发布于 2022-09-03 20:46:14 字数 6257 浏览 0 评论 0 收藏 0

operator 模块

In [1]:

import operator as op

operator 模块提供了各种操作符(+,*,[])的函数版本方便使用:

加法:

In [2]:

print reduce(op.add, range(10))
45

乘法:

In [3]:

print reduce(op.mul, range(1,10))
362880

[]

In [4]:

my_list = [('a', 1), ('bb', 4), ('ccc', 2), ('dddd', 3)]

# 标准排序
print sorted(my_list)

# 使用元素的第二个元素排序
print sorted(my_list, key=op.itemgetter(1))

# 使用第一个元素的长度进行排序:
print sorted(my_list, key=lambda x: len(x[0]))
[('a', 1), ('bb', 4), ('ccc', 2), ('dddd', 3)]
[('a', 1), ('ccc', 2), ('dddd', 3), ('bb', 4)]
[('a', 1), ('bb', 4), ('ccc', 2), ('dddd', 3)]

functools 模块

functools 包含很多跟函数相关的工具,比如之前看到的 wraps 函数,不过最常用的是 partial 函数,这个函数允许我们使用一个函数中生成一个新函数,这个函数使用原来的函数,不过某些参数被指定了:

In [5]:

from functools import partial

# 将 reduce 的第一个参数指定为加法,得到的是类似求和的函数
sum_ = partial(reduce, op.add)

# 将 reduce 的第一个参数指定为乘法,得到的是类似求连乘的函数
prod_ = partial(reduce, op.mul)

print sum_([1,2,3,4])
print prod_([1,2,3,4])
10
24

partial 函数还可以按照键值对传入固定参数。

itertools 模块

itertools 包含很多与迭代器对象相关的工具,其中比较常用的是排列组合生成器 permutationscombinations,还有在数据分析中常用的 groupby 生成器:

In [6]:

from itertools import cycle, groupby, islice, permutations, combinations

cycle 返回一个无限的迭代器,按照顺序重复输出输入迭代器中的内容,islice 则返回一个迭代器中的一段内容:

In [7]:

print list(islice(cycle('abcd'), 0, 10))
['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd', 'a', 'b']

groupby 返回一个字典,按照指定的 key 对一组数据进行分组,字典的键是 key,值是一个迭代器:

In [8]:

animals = sorted(['pig', 'cow', 'giraffe', 'elephant',
                  'dog', 'cat', 'hippo', 'lion', 'tiger'], key=len)

# 按照长度进行分组
for k, g in groupby(animals, key=len):
    print k, list(g)
print
3 ['pig', 'cow', 'dog', 'cat']
4 ['lion']
5 ['hippo', 'tiger']
7 ['giraffe']
8 ['elephant']

排列:

In [9]:

print [''.join(p) for p in permutations('abc')]
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']

组合:

In [10]:

print [list(c) for c in combinations([1,2,3,4], r=2)]
[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]

toolz, fn 和 funcy 模块

这三个模块的作用是方便我们在编程的时候使用函数式编程的风格。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文