
Tishka17
15.02.2018
10:27:04
Вроде

Sergey
15.02.2018
10:27:05
Ну так и есть

Stas
15.02.2018
10:27:42

Google

Stas
15.02.2018
10:27:45
у меня легаси говно(
нашел статью на stackoverflow, тут вроде как куча примеров
спасибо

Tishka17
15.02.2018
10:29:04

Solar
15.02.2018
10:29:17


Tigran
15.02.2018
10:29:21
попробую ещё раз
Дайте запилю кулстори. Я решаю задачки на leetcode и регулярно возникает потребность в сбалансированных деревьях (например, вот тут: https://leetcode.com/problems/the-skyline-problem/description/ - нужно быстро добавлять, удалять и находить максимум). Плюсовики хитро используют multiset, в питоне же деревьев с балансировкой нет, а реализовывать их ох как не хочется. Но обычно заранее известен перечень элементов, которые в это дерево надо будет засунуть. Поэтому я придумал такой лайфхак: я сортирую весь массив потенциальных элементов дерева и строю по нему сразу сбалансированное дерево (это тривиально):
def build_tree(array, l=None, r=None):
l = l or 0
r = r or len(array)
if r - l <= 0:
return None
if r - l == 1:
return Node(array[l])
m = (l + r) // 2
left = build_tree(array, l, m)
right = build_tree(array, m + 1, r)
return Node(array[m], left=left, right=right)
При этом я помечаю все элементы дерева как выключенные:
class Node(object):
def __init__(self, value, left=None, right=None):
self.value = value
self.enabled = False
self.has_enabled_successors = False
self.left = left
self.right = right
После этого остаётся вместо добавления элемента в дерево реализовать его включение (элементарная рекурсия), вместо удаления - выключение (тоже), и при других операциях (поиск элемента/поиск максимума/поиск минимума) учитывать включенность/выключенность. Вуаля, идеально сбалансированное дерево с log n операциями при миминуме умственного напряжения.
Может, у вас есть более вменяемые способы решать задачи на деревья без реализации балансировки?


dmks
15.02.2018
10:29:43
НЕ ПРОКАТИТ
Я веб обезьяна, меня не взяли в Яндекс
мне нечего рассказывать

Stas
15.02.2018
10:30:13

Artem
15.02.2018
10:30:15
так туда таких вроде только и берут

Stas
15.02.2018
10:30:23
а не совсем понимаю почему в данном случае нужен цикл?

Google

Stas
15.02.2018
10:30:33
я же попадаю в условие, мне нужно просто рекурсивно вызвать метод

Tishka17
15.02.2018
10:31:36
Метод возвращает генератор. Когда делаешь рекурсию, ты его не используешь

Stas
15.02.2018
10:32:11
аааааааааа
бляха, понял
спасибо!

Aragaer
15.02.2018
10:55:59
https://dpaste.de/5XB3
крч, как это бороть?
задолбало - бот каждый день падает

Artem
15.02.2018
10:57:49
signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object
а что там на самом деле подставляется?

Aragaer
15.02.2018
10:58:08
не, проблема не в этом. Тут это бага питона 3.5
в 3.6 тот же самый код работает нормально
ошибка выше - что именно мне надо ловить, чтобы если не удалось к серверу обратиться, то хрен с ним, все равно в цикле висит?
https://github.com/aragaer/pa-core/blob/master/tg.py#L24
вот код

Jentry
15.02.2018
10:59:39
крч, как это бороть?
Взять HTTPAdapter и сделать необходимое количество retry, прудусмотреть обработку requests.ReadTimeout, классика же ну

Aragaer
15.02.2018
10:59:51
я его не напрямую тыркаю
а через telepot
try:
updates = self._bot.getUpdates(offset=self._offset, timeout=0)
except TelepotException:
_LOGGER.error("Telegram error", exc_info=True)
except ProtocolError:
_LOGGER.error("Urllib error", exc_info=True)
оно тут в try ломается
File "/home/aragaer/Projects/assistant/router/routing/__init__.py", line 150, in tick
message = faucet.read()
File "/home/aragaer/Projects/assistant/tg.py", line 28, in read
updates = self._bot.getUpdates(offset=self._offset, timeout=0)

Google

b0g3r
15.02.2018
11:01:34
а эксепшн какой?

Aragaer
15.02.2018
11:01:56
выше ссылка на трейс. ReadTimeoutError тоже ловить видимо надо

b0g3r
15.02.2018
11:02:01
а, вижу
да, надо

Aragaer
15.02.2018
11:03:41
вот от такого и начинаются покемон-эксепшны. Сколько и каких эксепшнов оттуда будет вылетать я не знаю, а ловить их все надо, потому что они не должны ломать основное приложение

Ioann
15.02.2018
11:19:26
Лови всё подряд, логируй, потом разбирайся

Andrew
15.02.2018
11:22:32
Есть у кого про аккаунт на fl.ru ?

Artem
15.02.2018
11:51:11

Семен
15.02.2018
11:56:03
#работа
Привет! Ищем разработчиков в Яндекс.Такси
Подробности есть вот здесь https://yandex.ru/jobs/vacancies/dev/dev_python_taxi/
За подробностями пишите в личку, ищу ребят к себе в команду. Спасибо!

Ivan
15.02.2018
11:56:33

dmks
15.02.2018
11:56:41

Семен
15.02.2018
11:57:18

dmks
15.02.2018
11:58:20
А у вас и в такси второй питон или такси на третий переехало?

Семен
15.02.2018
11:59:50
Оба есть

BlackAndOrange
15.02.2018
12:00:09
А большая часть кодовой базы на каком?

Artem
15.02.2018
12:00:10

dmks
15.02.2018
12:00:49

Семен
15.02.2018
12:00:56
серьезно?
Ну есть разные задачи для ребят с разным уровнем. Я ищу к себе в команду человека. Я могу узнать подробности, если нужно, напиши в лс

Google

Artem
15.02.2018
12:01:02

dmks
15.02.2018
12:01:11
А, в этом плане :D

Artem
15.02.2018
12:01:19

Andrew
15.02.2018
12:14:20

greykoshak
15.02.2018
12:47:02
Господа, помогите разобраться с выводом содержимого таблицы в sqlpostgres через механизм ORM и Pretty Table. Кто-нибудь может быть полезен в этом? Заранее спасибо!

Freeman
15.02.2018
12:47:06
Здравствуйте, требуется человек для написания кода, по работе с Авито. Инфа в личку.

Oleg
15.02.2018
12:52:55
Добрый день. #pandas #dataframe. Одна из колонок имеет буквенно числовые значения: TEST1, TEST2, TEST20, TEST21, TEST3. Каким способом можна отсортировать строки в "привычном" порядке?

Andrew
15.02.2018
12:56:02

BuHuIIIko
15.02.2018
12:56:48
list.sort(key=lambda x: x.name)

Oleg
15.02.2018
12:58:11
Спасибо. А применительно к датафрейму?

BuHuIIIko
15.02.2018
12:59:07
Если используется list
Я не использовал панду еще

Oleg
15.02.2018
12:59:57
У меня датафрейм. Я хочу его сортировать

BuHuIIIko
15.02.2018
13:00:26
Думаю уже встроенны такие методы

Nikolay
15.02.2018
13:13:59

Oleg
15.02.2018
13:18:46
Да. Но этот метод не имет аргумента key. Видимо нужен другой подход. Может с помощь apply и своей функции создавать новую колонку. Но мне кажется это избыточным....

Polly
15.02.2018
13:36:23
PyCharm в Windows 8.1 работает?
Или только в Linux?

Bohdan
15.02.2018
13:36:39
почему бы ему не работать?

Artem
15.02.2018
13:37:36
конечно работает

Google

Nikolay
15.02.2018
13:54:25

Oleg
15.02.2018
14:27:56
Гарна ідея. Дякую.

Nikolay
15.02.2018
14:46:51
Гарна ідея. Дякую.
добро пожаловать в pandas, где использование apply() - почти в 100% случаев ужасная идея
ибо это for loop

Oleg
15.02.2018
14:48:46
Только знакомлюсь с pandas. Интересно но нужно много практики.
К счастью в случае небольших датафреймов apply приемлим

dmks
15.02.2018
14:52:51

Nikolay
15.02.2018
14:53:41
и да, numpy.vectorize() - это не то, если кто вдруг его вспомнил. Это тот же for loop.
Напоминаю интересующимся, что сегодня в Питере вечером в офисе Selectel проходит PyData - митап по анализу данных на Python. С регистрацией кто не успел - тот опоздал, но не забывайте вступать в группу на meetup.com, чтобы всегда быть в курсе! https://www.meetup.com/PyData-SPb/events/247116233/ .
И еще есть целый канал для обсуждения - https://t.me/pydata_spb
аналогичная группа для Москвы - https://www.meetup.com/PyData-Moscow/ , там тоже скоро будут новые события, не переключайтесь!