Модераторы: pythonwin, Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как увеличить скорость кода и уменьшить выделение 
:(
    Опции темы
Andrei3423421
Дата 11.9.2018, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 11.11.2017

Репутация: нет
Всего: нет



как увеличить скорость кода и уменьшить выделение памяти?

Код

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)

PM MAIL   Вверх
Romikgy
Дата 11.9.2018, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7233
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 142



код полный ахение... ИМХО
зачем столько логарифмов? 
enumerate(reversed(s)) зачем это делаете . если не используете результат их работы?
Цитата(Andrei3423421 @  11.9.2018,  19:24 Найти цитируемый пост)
sorted_list = sorted(h.items(), key=lambda x: (len(x[1]), x[1])) # сортирую

зачем ?
Цитата(Andrei3423421 @  11.9.2018,  19:24 Найти цитируемый пост)
print(' '.join(str(i + 1) for i, _ in sorted_list)

если выводите только длинны первого элемента?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Andrei3423421
Дата 12.9.2018, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 11.11.2017

Репутация: нет
Всего: нет



Код

sorted_list = sorted(h.items(), key=lambda x: (len(x[1]), x[1])) # сортирую
print(' '.join(str(i + 1) for i, _ in sorted_list)


тут сортировка если длина больше то список больше.
если равны то сравниваю по элементам и вывожу в порядке возрастания,логарифмами сокращаю числа
пример 
3
3 2 99 99 99
3 3 99 99 99

Это сообщение отредактировал(а) Andrei3423421 - 12.9.2018, 19:21
PM MAIL   Вверх
Romikgy
Дата 12.9.2018, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7233
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 142



Цитата(Andrei3423421 @  12.9.2018,  18:21 Найти цитируемый пост)
логарифмами сокращаю числа

зачем? и почему по основанию 2 ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_zorn_
Дата 14.9.2018, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 945
Регистрация: 21.8.2007

Репутация: -2
Всего: 12



Цитата
как увеличить скорость кода и уменьшить выделение

Купи нитру и прокладки.
PM MAIL   Вверх
Google
  Дата 21.9.2018, 17:21 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.