
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
зачем мне тащить ссылку на объект куда-то далеко в хендлеры и форматтеры, если я могу сделать все на месте и, грубо говоря, отдать ее гц тут же
ну при условии что у меня там тяжелый объект конечно

Maxim
27.02.2018
12:04:16
что вряд ли
еще меня очень интересует, есть ли у 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
причем асинхронно было бы ок вообще

Admin
ERROR: S client not available

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

Google

Nikolay
27.02.2018
12:49:54
Или mmap?

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 с условиями надо аккуратно, может он при каждом следующем запросе будет заново все предыдущие строки сначала обходить, чтобы ровно нужное количество пропустить