Python函数式编程片段
我见过一些使用列表理解和MapReduce的优雅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
谢谢 这里有一些很好的函数式代码片段:这里是快速排序:
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