Есть ответ 👍

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

232
316
Посмотреть ответы 3

Ответы на вопрос:


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

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

GretaD
4,6(84 оценок)

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

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS