计算机基础,Python - Map和Reduce

例子1. python中实现hashable

def __hash__(self):
    hashes = map(hash, self.components)
    return functools.reduce(operator.xor, hashes)

map函数是惰性的,和生成器表达式一样,创建一个生成器,按需产出结果,节省内存

def __hash__(self):
    #生成器表达式
    hashes = (hash(x) for x in self._components)
    return functools.reduce(operator.xor, hashes, 0)

另外:

例子2. 计算整数0~5累计异或的三种方式

2.1 for循环

n = 0
for i in range(1, 6):
    n ^= i

2.2 reduce + lambda

import functools
functools.reduce(lambda a, b: a^b, range(6))

2.3 reduce + operator(代替lambda)

import operator
import functools
functools.reduce(operator.xor, range(6))

operator模块以函数的形式提供了Python的全部中缀运算符,从而减少使用lambda表达式。

posted @ 2018-04-17 13:18  Rocin  阅读(335)  评论(0编辑  收藏  举报