S= list(map(int, input().split()))
N=S
for i in range (1,len(N),2):
N[i]=S[-(i+1)]
print(N)

Программа должна вывести список чисел, где четные позиции не меняются, а нечетные "зеркалятся". Не понимаю в чём у меня ошибка. По моей задумке список S остается неизменным в течении всей программы, но в реальности она всегда становится равной списку N. Почему так происходит (ведь я приравнял строки в начале программы, после они могут быть разными) и как исправить проблему?

Ответы

Ответ дал: nubpolymaster
5

Во-первых, если я правильно понял слово "зеркалиться", то элементы не зеркалятся, так как их нужно менять местами: n[i], s[-(i+1)] = s[-(i+1)], n[i]. Но может тут я не прав, так как не уверен по поводу слово "зеркалиться".

А во-вторых, список S и N после приравнивания начинают ссылаться на один и тот же объект в памяти. Если нужно иметь именно копию списка, то нужно написать: n = list(s) или n = s.copy() или n = s[:].


platon1108: Спасибо большое, действительно, Вы правы насчёт копии списка. Зеркалиться- заменить первое число на последнее, второе на предпоследнее и т.д. Вроде у меня всё работает.
Аноним: СУПЕР!!!
Вас заинтересует