|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
11.09.2018, 21:28 | #1 (permalink) |
Новичок
Регистрация: 26.08.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Как увеличить скорость кода и уменьшить выделение памяти?
Код:
2# кол списков 3 99 99 99 99 # первое число кол элементов в списке -1 2 33 33 33 import math log_2 = math.log(2) # для оптимизации вывел сюда h = {} i = 0 for _ in range(int(input())): s = input()[2:] s = s.split() if '1' in s: # удаляю первое число и елиницы такой список 2 2 1 99 станет 2 1 s = s[:s.index('1') + 1] s = list(map(float, s)) # для ускорения if len(s) == 1: # три случая если длина 1 acc = -9 s = [] elif len(s) == 2: # если длина 2 v1, v2 = s acc = math.log(v2) / log_2+math.log(math.log(v1) / log_2) s = [] else: # общий случай *s, v1, v2, v3 = s acc = v3 * math.log(v2) / log_2 + math.log(math.log(v1) / log_2) for n, it in enumerate(reversed(s)): # если цифр много до раскрываю if acc > 190: break acc = (2 ** acc) + math.log(math.log(float(s[-1])) / log_2) / log_2 del s[-1] acc = round(acc, 10) a = [int(item) for item in s] a.append(acc) a.reverse() h[i] = [float(item) for item in a] # заполняю словарь списком s = [] a = [] # print(h[i]) i += 1 sorted_list = sorted(h.items(), key=lambda x: (len(x[1]), x[1])) # сортирую print(' '.join(str(i + 1) for i, _ in sorted_list) |
11.09.2018, 21:28 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме так же имеются темы у которых схожее содержание Динамическое выделение памяти Большое выделение памяти выделение памяти Как уменьшить скорость EDGE? Как увеличить скорость работы USB-флеш памяти |
10.10.2018, 13:31 | #2 (permalink) |
Новичок
Регистрация: 25.09.2018
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Очень интересно
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|