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. Почему так происходит (ведь я приравнял строки в начале программы, после они могут быть разными) и как исправить проблему?
Ответы на вопрос:
Во-первых, если я правильно понял слово "зеркалиться", то элементы не зеркалятся, так как их нужно менять местами: n[i], s[-(i+1)] = s[-(i+1)], n[i]. Но может тут я не прав, так как не уверен по поводу слово "зеркалиться".
А во-вторых, список S и N после приравнивания начинают ссылаться на один и тот же объект в памяти. Если нужно иметь именно копию списка, то нужно написать: n = list(s) или n = s.copy() или n = s[:].
List в Python является ссылочным типом. В вашей программе имена S и N по сути ссылаются на один и тот же объект в памяти. По какой бы ссылке вы к нему не обратились, вы будете изменять один и тот же объект, что, естественно, приведёт к подобному поведению.
Что бы имя N ссылалось на копию объекта S в памяти, вызовите метод .copy() для S на строке N = S:
N = S.copy()
Так же, обращение по индексу S[-(i+1)] будет обращаться как раз таки к элементам под нечётными индексами (т.к при индексации листа с "головы" индексы идут с 0, а с "хвоста" - с -1), и на выходе вы так же получите абсолютно хаотическую перестановку элементов
Например, рабочий вариант:
S= list(map(int, input().split()))
N=S.copy()
for i in range (1,len(N),2):
N[i]=S[-i]
print(N)
>>> 4 5 6 7 8 9
>>> 4 9 6 7 8 5 #Как видим, элементы с нечётными индексами расположены в обратном порядке относительно изначального списка, в то время как чётные индексы идут в том же порядке.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
SankohTew19.11.2022 08:05
-
alexeyschelin1224.01.2021 06:13
-
Gazeerovka11.04.2020 19:11
-
Кактус131321.07.2020 05:37
-
Barkinhoev06isl09.03.2022 02:46
-
ImmortalSpirit20.05.2022 01:16
-
diman12200129.04.2020 07:27
-
dasha09868567426.04.2023 14:10
-
ПрофессорЧерепашка29.07.2022 05:35
-
никкки22811.02.2022 00:21
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.