![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
albertn |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Написал код для нахождения простых чисел
Но функция reduce проходит полностью по списку prost, даже если нашла простое число в начале. Есть ли какая-нить возможность прервать его выполнение как например
|
||||
|
|||||
setq |
|
|||
Unregistered |
Мне не удалось разобраться в твоём oneliner'е (и возможно это сигнал к тому чтобы подумать зачем писать такой код), поэтому я не знаю всё ли там окей. И всё-таки вот мои мелкие соображения:
1) нельзя прервать reduce() 2) код #2 красивее выглядит IMHO 3) зачем нужен filter() и почему не использовать for ... : ... раз уж filter всё равно ничего путного не возвращает? Хотя может ты с кем-нибудь поспорил )) Тогда другое дело. 4) itertools.dropwhile(f, seq) выкидывает из последовательности элементы не удовлетворяющие условию f(). Вот как это можно использовать:
|
|||
|
||||
albertn |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
За функцию itertools.dropwhile спасибо (+1) функцию filter я использовал как map, только мне надо было, чтоб она ничего не возвращала, а производила итерации. А весь остальной код почти-полностью совпадает с представленным в виде цикла. Теперь код работает быстрее:
Но есть один недостаток - itertools.dropwhile обрабатывает по-прежнему всю последовательность, а хотелось чтобы функция проверяла до первого неудовлетворяющего последовательности элемента. Есть ли возможность как-нить это реализовать в одну строчку? |
||||||
|
|||||||
setq |
|
|||
Unregistered |
||||
|
||||
albertn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
||||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |