@python_beginnersЭта группа больше не существует

Страница 1013 из 1885
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, скрипт написан для второй версии питона, как было написано выше.

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
Очевидно писать сюда: https://github.com/khalilbijjou/WAFNinja/issues
я думаю врятли разработчик ответит.

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

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

Pavel
28.12.2016
18:50:22
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
если defaultdict заюзать, то можно конструкцию cnt.get(i, 0) заменить на нормальную cnt[i]

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
и ты неправильно меряешь. у тебя большая часть теста меряет скорость рандома 8)))
отдельно генерацию рандомного листа, отдельно timeit и вычисление среднего?

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
import ssl работает?
Во втором работает, в третьем No module named '_ssl'

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

apt install python3-openssl попробуй
либа установилась но все равно не помогает

Может все из-за того что я вручную питон ставил 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
"вручную" - это через что?
Через ./configure make make test make install

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
В репах уже даже 3.6 есть
Я не мог 3.5 даже найти

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
Там еще вроде что-то сделать надо, чтобы оно само не обновлялось до анстейбла, но я не помню
А как удалить 3.6 не задев 3.4 потому что много прог вылетает. В прошлый раз перенастраивать много чего пришлось. Может есть варианты 3.6 вручную собрать с SSL?

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
ты эту систему по кусочкам угробил

Zart
28.12.2016
19:29:19
судя по описанному

Страница 1013 из 1885

Эта группа больше не существует Эта группа больше не существует