Почему метод insert в python'e выводит числа не по порядку, а наоборот?
Задача: Дан одномерный массив числовых значений, насчитывающий 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]
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
Как написал 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, потом остаток массива а от к-того элемента до конца.