gentoo.ru
python
python@conference.gentoo.ru
Четверг, 1 декабря 2011< ^ >
maksbotan установил(а) тему: ЯП Python || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck." || Создан список рассылки python@lists.gentoo.org
Конфигурация комнаты
Участники комнаты

GMT+4
[00:05:31] maksbotan вышел(а) из комнаты
[00:56:29] lk4d4 вошёл(а) в комнату
[00:57:49] <lk4d4> krigstask: спишь?
[02:12:59] lk4d4 вышел(а) из комнаты
[03:42:35] krigstask вышел(а) из комнаты
[03:54:22] krigstask вошёл(а) в комнату
[09:12:43] <krigstask> Спал, но перестал?
[13:20:34] lk4d4 вошёл(а) в комнату
[13:21:31] <lk4d4> krigstask: как получить последовательность вида [1,1,2,2,3,3...]?
[13:27:26] krigstask вышел(а) из комнаты
[13:32:22] krigstask вошёл(а) в комнату
[13:59:41] <krigstask> Не придумал ещё? Я отходил
[14:15:42] maksbotan вошёл(а) в комнату
[14:16:48] <lk4d4> я придумал, но решил у тебя еще поинтересоваться
[14:17:08] <maksbotan> lk4d4: из разряда упоризмов
[14:17:14] <maksbotan> >>> reduce(lambda x,y: x+y, zip(xrange(10), xrange(10)))
(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9)
[14:19:05] <lk4d4> неплохо
[14:19:25] <maksbotan> вообще, плоховато
[14:19:30] <maksbotan> а ты что придумал?
[14:20:06] <lk4d4> [x for y in xrange(10) for x in [y]*2]
[14:21:03] <maksbotan> о ужас
[14:21:05] <maksbotan> как это работает?
[14:21:25] <krigstask> Ха-ха-ха
[14:21:58] <maksbotan> krigstask: ну а ты как бы сделал?
[14:22:56] <krigstask> Я бы пообедал для начала
[14:23:19] <maksbotan> а я уже пообедал =)
[14:23:30] <maksbotan> хотя бы скажи какой вариант тебе больше нравится
[14:23:44] <krigstask> Зато ты в теннис не зарубался драматичным образом
[14:24:09] <krigstask> Это сложный вопрос
[14:25:17] <krigstask> Вообще надо подумать над решением
[14:25:24] <krigstask> Мне оба ваши не нравятся
[14:26:04] <maksbotan> неудивительно :)
[14:26:46] <lk4d4> зато мне надо только скобочки заменить для бесконечной последовательности, а тебе надо ireduce искать
[14:27:20] <maksbotan> генератор напиши просто да и всё
[14:28:06] <lk4d4> какой еще генератор?
[14:28:43] <maksbotan> http://paste.pocoo.org/show/515235/ вот такой
[14:28:50] <maksbotan> но это ещё более упоротое решение
[14:30:38] <lk4d4> ну да
[14:31:05] <lk4d4> (x for y in itertools.count() for x in [y]*2)
[14:31:10] <lk4d4> тоже такой же генератор
[14:33:03] <lk4d4> и можно itertools.islice или itertools.takewhile натравить
[14:33:20] <lk4d4> короче пошел я к зубному
[14:38:21] <maksbotan> оу щит
[14:38:28] <maksbotan> оказывается itertools мощная штука
[14:40:13] <krigstask> Я давно говорил
[14:40:49] <maksbotan> особо радует permutations и combinations
[14:56:16] <krigstask> def f(x):
     for y in x: yield x; yield x
[14:56:32] <krigstask> Ничего умнее пока не придумал (-:Е
[14:56:40] <maksbotan> ну я это и написао
[14:56:49] <maksbotan> написал*
[14:57:30] <krigstask> Честно говоря, я не смотрел
[14:57:44] <krigstask> Но у тебя какой-то ад написан, честно говоря
[14:59:14] <krigstask> Зачем `a`?
[14:59:31] <krigstask> Зачем [... for ...]?
[15:01:32] <maksbotan> чтобы показать что он работает
[15:01:40] <maksbotan> потому что бескончный же
[15:01:42] <maksbotan> а у тебя конечный
[15:05:55] <krigstask> У меня такой же, как последовательность на входе
[15:06:19] <krigstask> А у тебя не может возвращать ('a, 'a', 'b', 'b', ...)
[15:07:28] <krigstask> Вообще у lk4d4 вариант всё же неплохой
[15:11:48] lk4d4 вышел(а) из комнаты
[15:12:46] <krigstask> Скромно ушёл
[15:19:18] <krigstask> У меня такое впечатление, что мой вариант быстрее работает
[15:19:23] <krigstask> Кому не лень проверить?
[15:21:58] <maksbotan> мне лень
[15:23:08] <krigstask> Деловой ботанец
[15:23:13] <maksbotan> нет
[15:23:17] <maksbotan> я сериал смотрю =)
[15:23:31] <krigstask> Дурацкий какой-нибудь наверняка
[15:23:41] <maksbotan> Fringe
[15:23:49] <krigstask> Наверняка
[15:23:56] <maksbotan> не дурацкий
[15:23:57] <krigstask> (Никогда не слышал)
[15:23:59] <maksbotan> погугли
[15:24:21] <krigstask> Калоши только надену для гуглежа, ага
[15:24:39] <maksbotan> тебе лишь бы шутить
[15:24:50] <krigstask> Это тебе лишь бы сериалы смотреть
[15:24:53] <krigstask> А я работаю
[15:24:56] <maksbotan> ну знаешь
[15:24:57] <krigstask> И не пообедал
[16:59:52] <maksbotan> хаха, криг ты крутой
[17:00:06] <maksbotan> maks@maksbotan-netbook ~ $ python test1.py
krigstask:    9.59 usec/pass
lk4d4:    24.15 usec/pass
maks@maksbotan-netbook ~ $ lodgeit test1.py
http://paste.pocoo.org/show/515288/
[17:00:26] <krigstask> Ха-ха
[17:00:41] <maksbotan> проверь код тестов, может что не так
[17:00:42] <krigstask> А я заметил, что у меня с count() строчки быстрее бегут
[17:00:52] <maksbotan> с каким count?
[17:01:08] <krigstask> Бесконечный итератор проверял
[17:01:13] <maksbotan> а
[17:01:34] <maksbotan> ну как бы то ни было, в этом тесте кажись всё в равных условиях
[17:05:07] <krigstask> Ты там какой-то магией в последних двух строках занимаешься
[17:05:28] <maksbotan> не я
[17:05:29] <maksbotan> http://docs.python.org/library/timeit.html#examples
[17:05:38] <maksbotan> я честно скопировал оттуда :)
[17:05:53] <krigstask> (-:Е
[17:06:08] <maksbotan> что?
[17:06:13] <krigstask> Округление это, что ли…
[17:06:33] <krigstask> Прогнал на xrange(мульён)
[17:06:38] <krigstask> Всё равно я в три раза быстрее
[17:07:01] <maksbotan> надо будет сказать ему
[17:17:38] lk4d4 вошёл(а) в комнату
[17:18:43] <krigstask> lk4d4: видишь?
[17:18:46] <lk4d4> что-то я не понял что у вас творится
[17:19:29] <krigstask> Ботан прогнал твой и мой вариант через time
[17:19:35] <krigstask> Мой в три раза быстрее
[17:19:42] <maksbotan> кстати вопрос
[17:19:47] <maksbotan> почему ты сам то же самое не мог сделать?
[17:19:55] <krigstask> Что именно?
[17:20:20] <maksbotan> timeit
[17:20:29] <krigstask> Мог, но я тут немного работаю
[17:20:45] <krigstask> Слыхал про такое явление?
[17:21:33] <lk4d4> ну это я понял
[17:21:33] <lk4d4> но я думал однострочник будет
[17:21:56] <krigstask> Это тебе не перл
[17:22:06] <krigstask> Но вообще можно ещё подумать на эту тему
[17:24:20] <lk4d4> было бы неплохо
[17:26:13] <lk4d4> два yield это как-то не так
[17:34:00] <krigstask> Согласен
[17:34:17] <krigstask> Но это вполне может оказаться лучшим решением
[17:36:53] lk4d4 вышел(а) из комнаты: Replaced by new connection
[17:37:03] lk4d4 вошёл(а) в комнату
[17:37:19] <lk4d4> 1
[17:38:24] <krigstask> 2
[17:38:39] <lk4d4> мобильный интернет бессмысленный и беспощадный
[17:41:27] <lk4d4> так вот, мое решение тем круче, чем больше раз надо дублировать элементы
[17:41:28] <lk4d4> что конечно огрчает
[17:46:45] <lk4d4> надо еще что-нибудь выдумать
[17:49:11] <krigstask> Надо как-то сделать itertools.chain(*[(i, i) for i in x]) без преобразования в список
[17:51:05] <krigstask> itertools.chain(*((i, ) * 2 for i in x))
[17:51:10] <krigstask> Ха-ха-ха
[17:51:23] <krigstask> Прогоните тест, у кого есть время
[17:51:26] <krigstask> Меня ждёт теннис
[17:51:32] <lk4d4> пинг-понг?
[17:51:35] <krigstask> Ага
[17:52:59] <lk4d4> медленней двух yield
[17:53:20] <maksbotan> krigstask:    9.65 usec/pass
lk4d4:    24.45 usec/pass
krigstask 2:    20.08 usec/pass
[17:53:20] <krigstask> Кстати, с бесконечным итератором не очень-то
[17:57:59] <lk4d4> ваще эти comprehensions разочаровывают
[17:58:56] <lk4d4> я-то думал все
[17:59:04] <lk4d4> silver bullet
[18:01:07] <lk4d4> очень обидно, что через comprehensions нельзя написать аналог двух yield
[18:01:46] <maksbotan> это да
[18:04:31] <krigstask> Надо подумать ещё
[18:06:42] <lk4d4> кстати насчет []*n
[18:06:54] <lk4d4> если там элементами будут списки, то будет беда
[18:07:22] <lk4d4> и что самое невеселое, что itertools.repeat([],n) тоже даст там один и тот же список
[18:08:05] <krigstask> Да твои-то варианты мы давно отбросили (-%Е
[18:08:35] <krigstask> А, я понял, почему chain(*((i, i) for i in x) не работает с бесконечными
[18:08:38] <lk4d4> ты тоже вон в чейне этим погрешил
[18:09:20] <krigstask> У меня всё работает
[18:09:28] <krigstask> >>> x = [[1, 2], [1, 3]]
>>> for i in chain(*((i, i) for i in x)): print(i)
...
[1, 2]
[1, 2]
[1, 3]
[1, 3]
[18:09:48] <lk4d4> а если надо n
[18:09:50] <lk4d4> а не 2
[18:10:15] <krigstask> >>> for i in chain(*((i, ) * 2 for i in x)): print(i)
...
[1, 2]
[1, 2]
[1, 3]
[1, 3]
[18:10:28] <lk4d4> ну вот первые два это один и тот же список
[18:11:01] <krigstask> А, вот ты о чём
[18:11:12] <krigstask> Я тебя неправильно понял
[18:11:21] <lk4d4> так отож
[18:20:35] <lk4d4> в общем chain не вариант
[18:23:05] <lk4d4> обход тьюпла быстрее, чем списка
[18:23:34] <lk4d4> умножение списков и тьюплов *намного* дольше, чем явная запись
[18:38:01] <krigstask> Умножение и создание
[23:37:13] maksbotan вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!