![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
Пожалуйста, помогите:
Есть код:
ругается на "print" как обойти эту проблему? |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Никак. Лямбда в Питоне может содержать только выражение, но не оператор. Используй цикл.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
||||
|
||||
Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Нет, в обход пойти можно:
Это сообщение отредактировал(а) Artemios - 24.8.2006, 21:33 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Artemios, по правде говоря, я все равно предпочёл бы видеть в коде for. Потому что map — это преобразование списка, а не просто итерация.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Все зависит от целей, преследуемых топикстартером. Может, человек решил написать программку без единого if, for и while ![]() ![]() Это сообщение отредактировал(а) Artemios - 24.8.2006, 21:46 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
Artemios, спасибо! Интересный способ.
![]() Мои цели: 1) увеличить скорость выполнения (читал статью что map, reduce и т.д. быстрее for, while) 2) сделать код более читабельным (представьте, что у Вас 300-400 строк проверок if и циклов for или while) сделал примерно вот так:
может скорость и не увеличилась, но читать код уже намного легче! |
|||
|
||||
albertn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Но все-таки с идеологической точки зрения функции обработки списков в питоне должны применяться исключительно для обработки списков. Это ведь не Лисп.
Но если очень надо, то в принципе можно. И еще, функции вывода на экран выполняются гораздо дольше, чем та разница во времени выполнения между циклами и функциями map, reduce. Так что на скорость в данном случае почти не повлияет. |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
мм...
нет, наверно все-таки твой вариант легче читать ![]() А вот это верно. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
||||
|
||||
albertn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
||||
|
||||
cherep |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 11.1.2006 Где: Москва Репутация: 1 Всего: 4 |
Раз пошла такая пьянка, то вот Вам решению полностью в 1 строку:
А вообще хочу сказать, что делать это категорически не стоит, ибо это совершенно non-pythonic, и совершенно не прибавляет читабильности ну ни на йоту. Не забывайте, что у питона есть вполне определенная идеология (import this - изучать полчаса ![]() И еще одно предостережение - один из самых страшных грехов - преждевременная оптимизация. Программа должна быть в первую очередь красивой и понятной. Ах да, забыл о главном. Существенно более pythonic будет так:
Это сообщение отредактировал(а) cherep - 9.12.2006, 03:26 |
||||
|
|||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
И существенно быстрее ![]() Как это мы только все забыли про join? ![]() -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
dvska |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 30.1.2006 Репутация: 6 Всего: 9 |
Не совсем в тему, но
Надеюсь, все знакомы с функцией pprint / pformat?
Это сообщение отредактировал(а) dvska - 11.12.2006, 15:31 --------------------
|
||||
|
|||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Често не знал, спасибо ![]() в тему, в тему: она (pprint) и в лямбду замечательно лезет (тема топика):
![]() Это сообщение отредактировал(а) Artemios - 11.12.2006, 15:52 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |