Медленно работающая программа.

Diglerharibo

Новичок
Пользователь
Авг 17, 2020
21
1
3
Python 3.8.3
Windows 10

Здравствуйте, у меня возникла проблема, касаемо этого кода. Загоняю код в проверщик и он мне пишет, что два теста завалены и превышено время выполнения программы. Я смотрю на свой код и в принципе его можно поменять, но мне нравится логика действий, которую я выстроил. Подскажите можно ли как-то не выполняя глобального изменения кода, заставить его работать быстрее? или все же нужно мой код перелопачивать?

ссылка на сайт задачи.

Python:
'''Дан список целых чисел, число k и значение C. Необходимо вставить
в список на позицию с индексом k элемент, равный C, сдвинув все
элементы имевшие индекс не менее k вправо.

Поскольку при этом количество элементов в списке увеличивается,
после считывания списка в его конец нужно будет добавить новый
элемент, используя метод append.

Вставку необходимо осуществлять уже в считанном списке,
не делая этого при выводе и не создавая дополнительного списка.'''

x = list(map(str, input().split()))
y = list(map(str, input().split()))

x.append(y[1])
    
u = 0

while u != len(x) - (int(y[0]) + 1):
    for i in range(len(x)):
        if i == int(y[0]) - 1:
            z = x.pop(i + 1)
            x.append(z)
            u += 1
        else:
            continue
        
print(' '.join(map(str, x)))
 
  • Мне нравится
Реакции: Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Дан список целых чисел, число k и значение C. Необходимо вставить
в список на позицию с индексом k элемент, равный C, сдвинув все
элементы имевшие индекс не менее k вправо.
Вот пример без цикла:
Python:
x = list(map(int, input().split()))
y = list(map(int, input().split()))
x.insert(y[0], y[1])
print(x)
Вот с циклом:
Python:
x = list(map(int, input().split()))
y = list(map(int, input().split()))

x.append(y[1])

u = 0
for i, item in enumerate(x):
    if i == y[0]:
        x[i] = y[1]
    elif i > y[0]:
        x[i] = u
    u = item

print(x)
 
  • Мне нравится
Реакции: Student и Diglerharibo

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
Какие значения для x и y вводишь?
В программировании есть такой термин как профилирование кода, данный процесс проверяет весь код и покажет сколько секунд пожирает тот или иной процесс.

Вот статья с нашего сайта: https://python-scripts.com/cprofile-code-profiling

В самом PyCharm можно запустить код с профилированием и он покажет результаты анализа.
 
  • Мне нравится
Реакции: Diglerharibo

Форум IT Специалистов