Я видел, что некоторые изящные отрывки Python использовать понимание списка и карту уменьшают. Можно ли совместно использовать некоторые из них, кодируют или веб-сайт.
Спасибо.
Python не является Lisp. Пожалуйста, не пытайтесь заставить это выглядеть таким образом. Он только уменьшает один из самых больших сильных сторон Python, который является его читаемостью и понятностью позже.
Если вам нравится функциональное программирование, узнайте HASKELL , ML , или F # . Вы будете поражены тем, что предлагают эти языки (чистые функции для начала).
здесь есть несколько хороших функциональных фрагментов стилей: Функциональное программирование Howto
Вот быстрый сортировку:
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
Это решение для Программирование головоломки нахождения пропущенного номера среди целых чисел от 1 до 100:
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
Будьте осторожны при программировании Python в функциональном стиле. Единственная причина когда-либо делать это для чтения. Если алгоритм более элегантно выражается функционально, чем нет, и это не вызывает проблем с производительностью (обычно не), а затем идет прямо.
Однако Python не оптимизирует рекурсию хвоста и имеет фиксированный предел рекурсиона 1000, поэтому вы обычно не можете сделать рекурсию O (N), только O (log (n)).
также уменьшается () удаляется в Python 3, по хорошей причине ( http://www.artima.com/weblogs/viewpost.jsp?thread=98196 ). Большинство нетривиальных применений уменьшения более читаются как нормальная петля вместо сокращения, а сумма () уже встроена.