Sergey
15.07.2017
18:41:12
ура, я не одинок
> Ugh, Jinja is not an "excellent" templating language. It's a terrible broken mix of pythonisms and arbitrary-feeling restrictions and oddly missing pieces.
https://news.ycombinator.com/item?id=14777697
Dmitry
15.07.2017
18:46:58
Sergey
15.07.2017
18:47:30
Nikolay
15.07.2017
18:48:01
Google
Serge
15.07.2017
18:59:24
Sergey
15.07.2017
19:00:48
Roman
15.07.2017
19:20:11
Nikolay
15.07.2017
19:20:39
Александр
15.07.2017
20:21:36
Andrey
16.07.2017
07:28:17
Есть кто на pycon russia?
Aline
16.07.2017
07:46:54
Igor
16.07.2017
07:54:21
где достать такую красоту? Или ты заказывала?)
Aline
16.07.2017
07:54:39
На регистрации были
Евгений
16.07.2017
07:54:44
Alexey
16.07.2017
13:13:16
А вот если в доке прописано:
set() -> new empty set object
set(iterable) -> new set object
Build an unordered collection of unique elements.
А на деле получается что новый объект все таки отсортирован.
Это плохо или нет(в плане несоответствия докам)?
Много ли о чем еще недосказано или сказано не то что есть на самом деле?
b0g3r
16.07.2017
13:18:51
Там не написано, что он не отсортирован :)
Alexey
16.07.2017
13:19:52
А разве "unordered collection" это не "неупорядоченный набор"?
Google
b0g3r
16.07.2017
13:20:00
В CPython 3.6 (который на python.org) добавили оптимизацию для хэш-структур и теперь все они сохраняют порядок
Но это особенности реализации, а не требование к языку
и полагаться на это тем более нельзя
точно также, как раньше некоторые полагались на случайность словаря, например, и делали на нем выбор случайного чего-нибудь :)
https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-compactdict
Ruslan
16.07.2017
13:22:26
b0g3r
16.07.2017
13:24:09
Alexey
16.07.2017
13:24:35
b0g3r
16.07.2017
13:25:12
а как arr.sort() поможет в случае с последующим добавлением в сет?
Sergey
16.07.2017
13:25:30
Alexey
16.07.2017
13:25:34
Просто я пробоваля два варианта:
arr.sort()
s = set(arr)
и
s = set(arr)
В обоих случаях я получил отсортированную коллекцию.
b0g3r
16.07.2017
13:25:47
а теперь запусти этот код на 3.5
сортируй-несортируй, сет не гарантирует порядок
поэтому твой код *уже* полагается на хранение порядка, и он *уже* требует определенный питон :)
Во-первых я довольно грубо соврал выше, приравняв новый дикт к сету
Во-вторых у сета чуть-чуть подкрутили оптимизацию, и он хранит не так как 3.5, но всё же, довольно рандомно :) Числа, как и старая имплементация дикта он в определенных условиях упорядочивает
3.5
In [5]: set([2,'c', 5, 'a', 1])
Out[5]: {1, 2, 'a', 5, 'c'}
3.6
In [20]: set([2,'c', 5, 'a', 1])
Out[20]: {1, 2, 5, 'c', 'a'}
Alexey
16.07.2017
13:34:42
Просто есть такая задачка:
Find the unique number in list.
Первоначальная реализация была:
for e in arr:
if arr.count(e) == 1:
return e
Но тесты зафелились и первое что мне пришло в голову - сортирнуть лист:
arr.sort()
for e in arr:
if arr.count(e) == 1:
return e
Но тесты опять сфейлились. Немного погуглив я наткнулся на set() и привел код к такому виду:
arr.sort()
s = set(arr)
for e in s:
if arr.count(e) == 1:
return e
Алилуйя - тесты прошли.
Но я подумал, а зачем идти по *неотсортированной коллекции* после использования сета, кода проще сортирнуть ее.
Посравнивал я этот s в дебаг режиме - что сорт, что не сорт, все одинаково. Вот чобсна и вся ситуация :)
Nikolay
16.07.2017
13:36:09
Alexey
16.07.2017
13:37:09
Google
b0g3r
16.07.2017
13:37:34
в смысле всегда один, а вижу
Nikolay
16.07.2017
13:38:41
Тогда самое простое - обернуть в Counter, имхо
b0g3r
16.07.2017
13:39:04
а чому первая версия кода-то не работала?
Nikolay
16.07.2017
13:39:30
По времени небось
Это ж 2^n
b0g3r
16.07.2017
13:39:55
логично
Я всё ещё не очень понял мотивацию сортировать что-либо в этой задаче)
Nikolay
16.07.2017
13:40:37
Там и не надо
Alexey
16.07.2017
13:42:00
Nikolay
16.07.2017
13:42:15
b0g3r
16.07.2017
13:42:19
а если искомый элемент последнее число?) то увеличишь?)
Nikolay
16.07.2017
13:42:26
Не нужна тут сортировка вообще
И решение твоё крайне не эффективное
Alexey
16.07.2017
13:43:08
Nikolay
16.07.2017
13:43:24
Берёшь Counter и айда
Alexey
16.07.2017
13:55:15
Берёшь Counter и айда
Прогнал
for e in set(arr):
if arr.count(e) == 1:
return e
и
for i in Counter(arr).items():
if i[1] == 1:
return i[0]
Первый выигрывает в пол секунды :D
Спасибо за Counter - интересная штука.
b0g3r
16.07.2017
13:58:52
Советую почитать тебе чего-нибудь по алгоритмам. Есть чудесная "Грокаем алгоритмы" - очень простая и наглядная
Nikolay
16.07.2017
14:24:45
Не надо перебирать Counter
Google
Nikolay
16.07.2017
14:25:23
У него есть методы для поиска самых частых элементов, например
b0g3r
16.07.2017
15:03:44
Nikolay
16.07.2017
15:04:14
Aleksander
16.07.2017
15:05:38
всем привет
а что сейчас для паралельных вычислений в third party сервисах есть ?
aws lambda ?
нужно паралельно запустить функцию с разными параметрами - то есть фактически map просто
Nikolay
16.07.2017
15:07:01
Ну или ipyparallel
Aleksander
16.07.2017
15:10:51
спасибо
думаю pywren в самый раз будет
Vitali K.
16.07.2017
15:18:58
В стандартном multiprocessing такое есть
Sergey
16.07.2017
15:32:42
Roman
16.07.2017
15:51:05
Alexey
16.07.2017
16:03:00
Roman
16.07.2017
16:06:14
Alexey
16.07.2017
16:12:41
Допустим, у тебя словарь помнит порядок добавления элементов.
Я в данной задаче работал со списками, а не с словарями.
И я уже уяснил что в данной задаче сортировка ни на что не влияет.
А вот если словарь будет помнить порядок добавления, то с ним можно будет работать как с представлением стека или очереди(опять же, в зависимости от задачи).
Nikolay
16.07.2017
17:05:13
Хоть Бизли и разрешил
b0g3r
16.07.2017
17:10:45
Roman
16.07.2017
19:30:33
Olya
16.07.2017
22:20:56
Ребят, никто случаем не в курсе, есть ли шутка про костыли и велосипеды на английском? Поймут ли ее, если перевести дословно?
Dmitry
16.07.2017
22:28:10
дословно не поймут, имхо)
Dmitry
16.07.2017
22:36:17
workarounds & wheel reinventments
но смысл шутки потеряется, там нету этого мема
Google
Dmitry
16.07.2017
22:36:44
kludge?)
Dmitry
16.07.2017
22:37:15
а, ну да
Olya
16.07.2017
23:46:02
Спасибо :)
Да, wheel reinventment звучит правдиво
amureki
17.07.2017
06:27:34
По моему опыту workarounds и dirty hacks в ходу
Александр
17.07.2017
07:46:25
https://12factor.net/ru/
Vitali K.
17.07.2017
08:40:27
Александр
17.07.2017
08:43:52
Vyacheslav
17.07.2017
08:49:46
ага особенно хранить конфигурацию как переменные окржения и сорсить их.
Roman
17.07.2017
09:21:33