Kate
26.02.2018
23:14:48
сделал чуть грубее
from itertools import combinations, product, chain
a0 = ['омлет', 'пирог']
a1 = ['яблоко']
a2 = ['молоко', 'кофе', 'чай']
a3 = ['помидор', 'тыква']
a4 = ['редис']
a5 = ['желе', 'мороженое', 'конфета', 'жвачка', 'сок']
b = [0,1,3,5,5,5,4,2,3,2,5,5,0,2]
seen_counters = {i: 0 for i in range(6)}
def getarr(num):
return globals()["a{0}".format(num)]
res = []
for i in b:
a = getarr(i)
res.append(list(combinations(a, len(a) - seen_counters[i])))
seen_counters[i] += 1
for l in product(*res):
print("".join(chain(*l)))
спасибо) посмотрю
Nikolay
26.02.2018
23:15:24
спасибо) посмотрю
оно по памяти не особо эффективно, к сожалению. Возможно, у Сергея правильнее, но я в его код не вникал
Serge
27.02.2018
07:43:03
А кто эту задачу придумал? Я вижу тут один шаг, который делает решение тривиальным.
Google
Serge
27.02.2018
07:44:48
Sergey
27.02.2018
10:39:04
А кто-нибудь чего-нибудь может рассказать про GeekBrains? У меня тут знакомый намылился к ним сюда: https://geekbrains.ru/professions/python_developer
Фантик красивый, а как оно там внутри — непонятно?
Олег
27.02.2018
10:47:36
Насильно учить не будут.
Sergey
27.02.2018
10:49:20
Это, конечно, хорошо, но так себе качественная оценка :D
Олег
27.02.2018
10:51:16
Из личного опыта. С нуля базу поднимают. Задуматься дают. Много, конечно приходится гуглить. Но выделяются наставники и группе вроде как есть сильные и подкованные коллеги, которые направят и подскажут.
Про общанное трудоустойство, а точнее устройство на стажировку, могу сказать, что они привлекают много партнеров разных уровней бизнеса, но попадут туда не все.
В организационном плане, во многом идут на уступки студентам.
Из того что может расстроить - требуется много времени для выполнения ДЗ (ДЗ не обязательно к выполнению) они местами очень сложные для новичка.
Sergey
27.02.2018
10:57:14
Окей, спасибо!
Jonh
27.02.2018
11:04:36
Sergey
27.02.2018
11:05:02
А тут денег платить надо
Некто
27.02.2018
11:33:47
Может ему и питон тогда на самом деле не нужен?
Google
Некто
27.02.2018
11:34:03
Странно что-то учить, если нет мотивации личной
Юрий
27.02.2018
11:34:24
Sergey
27.02.2018
11:34:34
?♂️
Danil
27.02.2018
11:42:02
Регистрация на ITGM открыта: http://piter-united.ru/event/cje306m4g69or0132wphzlzqm/
Это большой слёт всех айтишных сообществ петербурга, проходящий пару раз в год. Мы там тоже будем с разными докладами про Python, разработку и сообщества.
Спешите, места обычно очень резво заканчиваются.
Олег
27.02.2018
11:43:20
Загадочный митап
Dmitry
27.02.2018
11:43:48
почему?)
Igor
27.02.2018
11:44:06
Dmitry
27.02.2018
11:44:13
типа то что без программы?)
Олег
27.02.2018
11:44:14
В программе пусто, а название ни о чем не говорит
Dmitry
27.02.2018
11:44:36
))
вот немного описания https://vk.com/wall-158437359_17
Dmitry
27.02.2018
11:44:59
Dmitry
27.02.2018
11:45:26
а программы нету потому что так устроены их процессы, к сожалению
Олег
27.02.2018
11:48:34
Некто
27.02.2018
11:49:19
Эх, в отпуске буду 17го
Maxim
27.02.2018
11:57:43
народ, такой вопрос. в чем разница между
logger.info(f'foo is {foo}')
и
logger.info('foo is %s', foo)
?
и есть ли какой-то смысл писать по второму варианту
Stepan
27.02.2018
11:58:21
Maxim
27.02.2018
11:58:41
ну а кроме очевидного? =)
я пишу на 3.6 only сейчас
Sergey
27.02.2018
11:59:14
dis можно посмотреть, там для f-строк какие-то модные опкоды свои
Google
Maxim
27.02.2018
11:59:28
да причем тут f-строки
Dmitry
27.02.2018
11:59:35
второй быстрее) хотя тут хз. logger много всего делает чтобы прокинуть args
Maxim
27.02.2018
11:59:51
ну а если я бы спросил про
logger.info('foo is %s' % foo) и logger.info('foo is %s', foo)?
Sergey
27.02.2018
12:00:03
Sergey
27.02.2018
12:01:35
Dmitry
27.02.2018
12:02:24
я бы писал
logger.info('foo is %s' % foo)
Некто
27.02.2018
12:03:05
Maxim
27.02.2018
12:03:36
Sergey
27.02.2018
12:03:49
Maxim
27.02.2018
12:04:07
зачем мне тащить ссылку на объект куда-то далеко в хендлеры и форматтеры, если я могу сделать все на месте и, грубо говоря, отдать ее гц тут же
ну при условии что у меня там тяжелый объект конечно
что вряд ли
еще меня очень интересует, есть ли у postgresql/aiopg какой-нибудь "поточный" режим?
есть запрос, который работает скажем 20 секунд и генерирует тонну строк, но каждая отдельная строка генерируется достаточно быстро
можно из питона начать получать строки до того, как бд сгенерировала их все?
или может это именно так и работает по-умолчанию? :)
Sergey
27.02.2018
12:12:28
Marco
27.02.2018
12:24:10
Sergey
27.02.2018
12:24:17
Maxim
27.02.2018
12:28:55
Marco
27.02.2018
12:31:10
Maxim
27.02.2018
12:34:06
ну хорошо, вот у меня конкретный пример
есть таблица users, в ней поле counters. в таблице около 5-6 млн строк
мне надо выбрать ид юзеров, у которых counters is null, и для каждого ид что-то сделать на стороне питона
Google
Maxim
27.02.2018
12:34:14
думаешь такой запрос будет быстро работать?
ну хотя тут как раз можно limit/offset
Serge
27.02.2018
12:35:33
Maxim
27.02.2018
12:36:57
Counters это text, индекс по нему кажется странным делать, учитывая что искать по тексту мне не надо
Marco
27.02.2018
12:37:10
Олег
27.02.2018
12:37:34
Ruslan
27.02.2018
12:38:20
причем асинхронно было бы ок вообще
Marco
27.02.2018
12:39:09
Ruslan
27.02.2018
12:39:10
я такое делал года 3 назад на таблице тоже около 5 млн
Maxim
27.02.2018
12:39:13
Так я и хочу чтобы драйвер бд за меня на чанки бил и итератор давал)
Marco
27.02.2018
12:40:33
https://www.postgresql.org/docs/9.2/static/plpgsql-cursors.html
Maxim
27.02.2018
12:41:25
А почему нет, если базу никто не трогает все равно?
Marco
27.02.2018
12:42:28
Sergey
27.02.2018
12:43:40
Marco
27.02.2018
12:46:29
Dmitriy
27.02.2018
12:47:41
Nikolay
27.02.2018
12:49:49
Или mmap?
Google
Dmitriy
27.02.2018
12:50:44
Marco
27.02.2018
12:50:59
Чанки - вот это разумный компромисс.
Dmitriy
27.02.2018
12:53:33
Roman
27.02.2018
12:57:46
Nikolay
27.02.2018
12:58:06
Roman
27.02.2018
12:58:23
Nikolay
27.02.2018
12:59:16
Да даже Berkeleybd умеет в такое, вроде
Roman
27.02.2018
13:00:33
Nikolay
27.02.2018
13:00:54
Roman
27.02.2018
13:01:02
Maxim
27.02.2018
13:05:27
а что именно лежит в counters?
строка :)
внутреннее содержание которой не важно, я должен для каждого ид получить эту строку из внешнего сервиса и потом положить в бд
5-6 млн это может и не так много, но я не привык с такими объемами данных работать
пока что :)
Andrey
27.02.2018
13:07:37
ну хотя тут как раз можно limit/offset
с offset с условиями надо аккуратно, может он при каждом следующем запросе будет заново все предыдущие строки сначала обходить, чтобы ровно нужное количество пропустить