Python函数式编程片段

Python函数式编程片段,python,functional-programming,Python,Functional Programming,我见过一些使用列表理解和MapReduce的优雅python代码片段。您可以共享其中一些代码或网站吗 谢谢 这里有一些很好的函数式代码片段:这里是快速排序: def qsort (list): if (len(list) > 1): list = qsort(filter (lambda x: x <= list[0], list[1:])) + [list[0]] + qsort(filter (lambda x: x > list[0], list

我见过一些使用列表理解和MapReduce的优雅python代码片段。您可以共享其中一些代码或网站吗


谢谢

这里有一些很好的函数式代码片段:

这里是快速排序:

def qsort (list):
    if (len(list) > 1):
        list = qsort(filter (lambda x: x <= list[0], list[1:])) + [list[0]] + qsort(filter (lambda x: x > list[0],  list[1:]))
    return list

Python不是lisp。请不要让它看起来像那样。它只减少了python最大的优点之一,即以后的可读性和可理解性


如果您喜欢函数式编程,请学习或。你会惊讶于这些语言所提供的功能(从纯函数开始)。

用函数式编程python时要小心。这样做的唯一原因是为了可读性。如果算法在功能上的表达比必要的表达更优雅,并且不会导致性能问题(通常不会),那么就直接开始吧

但是,python不优化尾部递归,并且有固定的递归限制1000,因此通常不能执行O(n)递归,只能执行O(log(n))


此外,python 3中删除了reduce(),这是有充分理由的()。reduce的大多数非平凡用法作为普通循环而不是reduce更具可读性,sum()已经内置。

好问题,但社区wiki!我同意ML-尽管经常被忽略的
reduce
仍在
functools
中。
from random import randint
nos = range(1,101)
to_remove = randint(1,100)
nos.remove(to_remove)
print "Removed %d from list" % to_remove

found = 5050 - reduce (lambda x,y: x+y, nos)
print "You removed %d " % found