
Denis
28.12.2016
18:15:39
Оптимальнее в смысле кода или в смысле асимптотики?

Johnnie
28.12.2016
18:16:00
ну вообще
бест практис
def delete_nth(order, max_e):
return [i for _, i in enumerate(order) if order[:_].count(i) < max_e]

Google

Johnnie
28.12.2016
18:16:16
вот так еще работает тоже

Denis
28.12.2016
18:16:31
Это квадрат
Я бы сделал дикт с количеством, шел по списку и добавлял

Zart
28.12.2016
18:17:04
эту задачу же вчера решали?

Johnnie
28.12.2016
18:18:03

Zart
28.12.2016
18:18:10
а, не. схожая, но не та

Pavel
28.12.2016
18:18:14
эту задачу же вчера решали?
Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи еще хоть четверть века -
Все будет так. Исхода нет.
Умрешь - начнешь опять сначала
И повторится все, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.

Johnnie
28.12.2016
18:18:51
ape364@pbnb ~> python3 -m timeit "order=[20,37,21];[i for _, i in enumerate(order) if order[:_].count(i) < 1]"
1000000 loops, best of 3: 1.92 usec per loop
а как первый вариант проверить я че то хз даже

Denis
28.12.2016
18:19:38
Ты список побольше бери
10000 элементов хотя бы

Zart
28.12.2016
18:21:27
я как-то не вижу способа решить эту задачу не сделав полного прохода по списку

Denis
28.12.2016
18:22:02
Ну быстрее линии не получится, да

Google

Zart
28.12.2016
18:22:14
один проход придётся сделать полностью в любом раскладе
единственная оптимизация что вижу - при превышении лимита при переборе - удалять из накопителя и не пропускать новых копий в него

Denis
28.12.2016
18:23:17
Вот же оптимизация
Я бы сделал дикт с количеством, шел по списку и добавлял

Zart
28.12.2016
18:23:19
это выиграет чуток времени

E
28.12.2016
18:35:56
ребята, помогите разобраться, запускаю скрипт на питоне 2 выдает ошибку: ascii codec can't decode byte 0xe4, скрипт написан для второй версии питона, как было написано выше.

b0g3r
28.12.2016
18:39:40

E
28.12.2016
18:40:00

b0g3r
28.12.2016
18:40:43
Очевидно писать сюда: https://github.com/khalilbijjou/WAFNinja/issues

Johnnie
28.12.2016
18:41:22
def delete_nth(order, max_e):
return [i for _, i in enumerate(order) if order[:_].count(i) < max_e]
def delete_nth1(order, max_e):
result = list()
for i in order:
if result.count(i) < max_e:
result.append(i)
return result
t1 = timeit.timeit(lambda: delete_nth([random.randint(1, 50) for x in range(100)], 3))
t2 = timeit.timeit(lambda: delete_nth1([random.randint(1, 50) for x in range(100)], 3))
print('t1: ',t1)
print('t2: ',t2)
я че-то делаю не так?
уже несколько минут думает)

E
28.12.2016
18:41:48

b0g3r
28.12.2016
18:42:45
Где ошибка? В каком файле? В какой строке? Что делаешь для получения ошибки?

Denis
28.12.2016
18:43:22

Johnnie
28.12.2016
18:43:59
о, бля
t1: 386.8298510239997
t2: 350.74594320200003
?
быстрее тот, что без компрехеншена оказался

Google

Johnnie
28.12.2016
18:44:33
не сильно правда

Denis
28.12.2016
18:47:10
def delete_nth(order, max_e):
res = []
cnt = {}
for i in order:
if cnt.get(i, 0) < max_e:
res.append(i)
cnt[i] = cnt.get(i, 0) + 1
return res

Johnnie
28.12.2016
18:50:10

Pavel
28.12.2016
18:50:22

Denis
28.12.2016
18:51:21
>>> a = list(range(10000))
>>> timeit.timeit(lambda:delete_nth(a, 5), number=10)
0.06797109197941609
>>> timeit.timeit(lambda:delete_nth1(a, 5), number=10)
6.873372861999087

Zart
28.12.2016
18:54:03
c = collections.Counter(order)
result = list(map({k for k, v in c.items() if v <= max_e}.__contains__, order))
влом мерять

Johnnie
28.12.2016
18:54:41
https://paste.fedoraproject.org/514300/14829512/
t1: 30.962514756999553
t2: 28.425595231999978
t3: 32.18509218300005
хм...

Denis
28.12.2016
18:55:10
>list_len = 10

Zart
28.12.2016
18:55:12
хоть бы импорты не выкусывал

Denis
28.12.2016
18:55:15
Ты бы еще 1 поставил

Zart
28.12.2016
18:55:40
и ты неправильно меряешь. у тебя большая часть теста меряет скорость рандома 8)))
эту часть надо в сетап выносить

Johnnie
28.12.2016
18:56:12
больше ниче нет)

Pavel
28.12.2016
18:56:30
counter в два раза быстрее, чем dict\defaultdict

Johnnie
28.12.2016
18:56:56

Zart
28.12.2016
18:57:26
таймит хавает два аргумента
один для того чтобы подготовить к замеру, второй - что меряем

Google

Zart
28.12.2016
18:58:16
timeit.timeit('default_nth(x, y)', 'x, y = [random...], 10')

Agent
28.12.2016
19:00:49
Добрый вечер, извините за нубский вопрос - как сконфигурировать SSL в пайтоне 3? Pip не хочет работать.. На 2-м Питоне все отлично

Denis
28.12.2016
19:01:54
Текст ошибки есть?

Agent
28.12.2016
19:02:09
Can't connect to https URL because the SSL module is not available

Denis
28.12.2016
19:02:58
import ssl работает?

Agent
28.12.2016
19:04:15

Denis
28.12.2016
19:04:35
ОС какая?

Agent
28.12.2016
19:04:46
Debian

Denis
28.12.2016
19:06:01
apt install python3-openssl попробуй

Agent
28.12.2016
19:06:02
Если точнее то 8.6
Может все из-за того что я вручную питон ставил 3.6.0. В системе вообще был только 2-й питон. С wicd прилетели минимальные либы 3.4 двухгодичной давности. На них pip вроде работал

Denis
28.12.2016
19:13:39
Может из-за этого
Собирал сам?

Agent
28.12.2016
19:13:56
Да

Zart
28.12.2016
19:13:56
"вручную" - это через что?
а, запорол

Denis
28.12.2016
19:14:12
Там вроде с --with-ssl надо

Zart
28.12.2016
19:14:13
проще переставить пакет питона заново

Denis
28.12.2016
19:14:28
В репах сейчас 3.5 есть

Google

Zart
28.12.2016
19:14:30
я думаю он openssl-dev не ставил и ему _ссл поэтому и не собрало

Agent
28.12.2016
19:14:56

Zart
28.12.2016
19:15:38
и ты конечно же поставил все нужные инклуды и либы - тк, ссл, беркли..

Agent
28.12.2016
19:16:25
Весь 3.6 поставил. Банально по инструкции

Denis
28.12.2016
19:16:49
В репах уже даже 3.6 есть
В experimental
Но он rc

Agent
28.12.2016
19:17:26

Denis
28.12.2016
19:17:32
У тебя стейбл, наверно

Agent
28.12.2016
19:20:12
Беда с репами на дебиане, я недавно перешёл с убунты
Там все нужное само ставится)

Denis
28.12.2016
19:20:45
Тут тоже
Добавь в sources.list
deb https://mirror.yandex.ru/debian experimental main contrib non-free
Там еще вроде что-то сделать надо, чтобы оно само не обновлялось до анстейбла, но я не помню

Agent
28.12.2016
19:24:17

Denis
28.12.2016
19:25:01
make uninstall?

Zart
28.12.2016
19:27:18
и снесёт нахер ошмётки

Agent
28.12.2016
19:28:05
make uninstall?
Спасибо, потому что стремно ставить анстейбл либы. Я эту систему по кусочкам долго собирал. С чистой установки начинал без ничего, сейчас X11+fluxbox потому и либ так мало было, много чего пришлось доставить перед сборкой питона.

Denis
28.12.2016
19:28:27
Хех, у меня сервер весь анстейбл, живой еще

Zart
28.12.2016
19:28:30
ты эту систему по кусочкам угробил

Agent
28.12.2016
19:28:51

Zart
28.12.2016
19:29:19
судя по описанному
Эта группа больше не существует