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

912 интересует 3 не интересует
5.9m просмотров

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. Почему так происходит (ведь я приравнял строки в начале программы, после они могут быть разными) и как исправить проблему?


спросил от Отличник (5.1k баллов) в категории Информатика
1 Ответ
76 интересует 7 не интересует
ответил от Одаренный (1.8k баллов)

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

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

оставил комментарий от
199 12

СУПЕР!!!

оставил комментарий от Отличник (5.1k баллов)
134 11

Спасибо большое, действительно, Вы правы насчёт копии списка. Зеркалиться- заменить первое число на последнее, второе на предпоследнее и т.д. Вроде у меня всё работает.

...