совет hazzen хорош (используйте массивы), так как Вы, вероятно, хотите сделать, много этих разрушительных обновлений и списков очень неэффективно наугад доступ. Самый легкий способ сделать это
(setq A (make-array 5) :initial-contents '(4 3 0 2 1))
(setf (elt 2 A) 'not-a-number)
, где A является массивом (хотя elt
работы для любой последовательности).
Однако, если Вы должны быть функциональными, который является
Тогда необходимо использовать язык Common LISP, эквивалентный из кода hazzen:
(defun replace1 (list n elem)
(cond
((null list) ())
((= n 0) (cons elem list))
(t (cons (car list) (replace1 (cdr list) (1- n) elem)))))
Это выглядит медленным, потому что это, и это, вероятно, почему это не включено в стандарт.
код hazzen является версией Схемы, которая полезна, это - то, что Вы используете.
Нет ничего плохого в том, чтобы использовать несколько версий Python. Иногда это необходимо при использовании приложений с зависимостями версий. Вероятно, самая большая проблема связана с зависимостями сайта от пакета, которые могут отличаться от приложения к приложению. Здесь могут помочь такие инструменты, как virtualenv
. Одна вещь, которую вы не должны делать , - это пытаться удалить поставляемый Apple Python в / System / Library / Frameworks и связанный с ним из / usr / bin / python. (Обратите внимание на недавнее обсуждение нескольких версий здесь .)
Подход, который я предпочитаю, должен работать в любой UNIX-подобной операционной системе:
Создайте для каждого приложения, которому требуется определенная версия Python, учетную запись пользователя. Установите для каждого пользователя соответствующую версию python с префиксом локального пользователя (например, ~ / build / python) и добавьте ~ / build / bin / в переменную среды PATH пользователя. Устанавливайте / используйте свои приложения python для их правильного пользователя.
Преимущество этого подхода - идеальная изоляция между отдельными установками python и относительно удобный выбор правильной среды python (просто su
для соответствующего пользователя ). Также операционная система остается нетронутой.
virtualenv Яна Бикинга позволяет мне иметь изолированные Pythons для каждого приложения, которое я создаю, и позволяет мне решать, включать ли глобальные пакеты сайтов в изолированную среду Python. .
Я не пробовал это с Zope, но предполагаю, что следующее должно работать нормально:
Это блестяще сработало для управления проектами Django с различными версиями Python, Django и надстройками.
Эта статья , кажется, более подробно описывает особенности Grok и Virtualenv,но общие положения должны относиться и к Zope.
+1 для virtualenv.
Даже если вам не нужны разные версии Python, все равно хорошо держать зависимости разработки отдельно от Python.
Я не уверен, какую ОС вы используете, но нахожу эти инструкции, очень полезные для запуска сред разработки python в OSX.