Почему метод insert в python'e выводит числа не по порядку, а наоборот?

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2023

Задача: Дан одномерный массив числовых значений, насчитывающий N элементов. Вставить группу из М новых элементов, начиная с позиции К. Выводит числа из insert наоборот, а не то, как они введены по порядку. Можно ли обойтись без срезов или стоит их применить?

a = []
n = int(input('Введите число: '))
for i in range(n):
    d = int(input())
    a.append(d)
h = int(input('Введите число -'))
k = int(input('Введите диапазон -'))
for j in range(h):
    s = int(input())
    a.insert(k,s)
print(a)

Входные данные:

Введите число - 4
1
2
3
4
Введите число - 2
Введите диапазон - 1
56
32

Вывод:

[1, 32, 56, 2, 3, 4]

Ответы

▲ 0

Как написал MBo - увеличивать k на единицу после каждой вставки

for j in range(h):
    s = int(input())
    a.insert(k,s)
    k+=1

Либо срезами - делаете ввод в отдельный массив b, а потом - a[ : k ] + b + a[ k : ]

for j in range(h):
    b.append(int(input()))
c = a[ : k ] + b + a[ k : ]

Срезы применять имеет смысл:

  • в общем случае работает быстрее, чем вставка по 1 элементу
  • синтаксически понятнее, даже визуально видно что делаете - берете массив a с начала до k-го элемента, потом массив b, потом остаток массива а от к-того элемента до конца.