Форум сайта python.su
reduce(lambda y,x: x==0 and print(y) or x+y, iter(input, 99999))
2,6 -> SyntaxError: invalid syntax
3.1 -> NameError: name 'reduce' is not defined
Отредактировано (Март 1, 2010 20:10:44)
Офлайн
Гы. Вообще-то это был 2.5
PS: Хм. Что же это было? В 2.5, который дома, не работает. Завтра посмотрю на работе.
Отредактировано (Март 1, 2010 22:56:45)
Офлайн
Ed
PS: Хм. Что же это было? В 2.5, который дома, не работает. Завтра посмотрю на работе.
print(y) # Синтаксис эррор.
iter(input, 99999)) # Хитрый ход, позволяет избавится от (float(raw_input(" -> ")) for i in itertools.count()), но разве input() безопасен?
iter(lambda: float(raw_input(" -> ")), 99999) # Опять я всё усложняю :)
import pprint
reduce(lambda y,x: x==0 and pprint.pprint(y) or x+y, iter(input, 99999)) # в принципе так работает.
reduce(lambda y,x: x==0 and pprint.pprint(y) or x+y, iter(lambda: float(raw_input(" -> ")), 99999)) # И так тоже работает. Всёравно проще чем у меня.
Офлайн
Дело в том, что у меня работало под чем-то. Я проверял прежде чем сюда постить. Что же это было ? :)
Офлайн
EdНеизвестно, говорят лучше всего работает под амфетаминами :)
Дело в том, что у меня работало под чем-то.
Офлайн
но разве input() безопасен?
Но моё решение первое потому мифические $30 мои :)Я не претендую. Могу даже добавить мифических денег, если хотите :)
Офлайн
EdТак задача не в том чтоб решить задачу (масло масляное), а в том чтоб решить задачу правильно, но так чтобы её невозможно было сдать неразобравшись :)
Вообще весь этот код - это извращение. Так писать нельзя.
Офлайн
knkdМда, видимо это как раз тот случай. Зашел на рабочий комп - там действительно 2.5 и не работает.
Неизвестно, говорят лучше всего работает под амфетаминами :)
Где есть простая (очень простая) неанглийская документация по itertools?насчет документации не знаю. А что непонятно-то?
Чем больше пытаюсь им пользоваться тем меньше понимаю как оно работает :)
Офлайн
EdНичего не понятно :)
А что непонятно-то?
[
'chain', #
'combinations', #
'count', # Бесконечный счётчик.
'cycle', #
'dropwhile', #
'groupby', #
'ifilter', # filter-итератор
'ifilterfalse', # filter-итератор
'imap', # map-итератор
'islice', # срез-итератор?
'izip', # zip-итератор.
'izip_longest', # zip-итератор.
'permutations', # не вполне понятно.
'product', # не вполне понятно.
'repeat', #
'starmap', #
'takewhile', #
'tee' #
]
Офлайн
Если с английским туго, то рекомендую пробовать. Если чего не получится - спрашивайте здесь.
Вот, например возьмем chain. Непонятно чего он делает, но судя по этому http://docs.python.org/library/itertools.html#itertools.chain принимает некую последовательность итераторов.
пробуем ему ее дать и посмотреть на результат:
In [1]: import itertools
In [2]: list(itertools.chain([1,2,3], ['a','n', 'z'], [0,0,0]))
Out[2]: [1, 2, 3, 'a', 'n', 'z', 0, 0, 0]
Офлайн