Предмет: Информатика,
автор: platon1108
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
Во-первых, если я правильно понял слово "зеркалиться", то элементы не зеркалятся, так как их нужно менять местами: n[i], s[-(i+1)] = s[-(i+1)], n[i]. Но может тут я не прав, так как не уверен по поводу слово "зеркалиться".
А во-вторых, список S и N после приравнивания начинают ссылаться на один и тот же объект в памяти. Если нужно иметь именно копию списка, то нужно написать: n = list(s) или n = s.copy() или n = s[:].
platon1108:
Спасибо большое, действительно, Вы правы насчёт копии списка. Зеркалиться- заменить первое число на последнее, второе на предпоследнее и т.д. Вроде у меня всё работает.
Интересные вопросы
Предмет: Английский язык,
автор: nikitospav
Предмет: Русский язык,
автор: balapanai
Предмет: Русский язык,
автор: Nadmil
Предмет: Биология,
автор: 0012345600
Предмет: Психология,
автор: gettmanich