Как поменять местами соседние элементы в списке?
Хочу для списка реализовать обмен значений соседних элементов.
То есть, значениями обмениваются элементы с индексами 0 и 1, 2 и 3 и т.д..
При нечетном количестве элементов последний сохранить на своем месте.
Для заполнения списка элементов необходимо использовать функцию input() .
Если без input() , то все работает.
Ответы (3 шт):
Во-первых нужно правильно разделять вводимые элементы в список. Вы разделяете каждый введённый символ, а обычно вводимые данные разделяют по пробелам. Во-вторых размер срезов у вас будет разный, а нужно сделать их одинаковым, чтобы не было ошибки. Если вы отрезаете один элемент спереди у одного среза, то у другого надо отрезать один элемент с конца, тогда они получатся одинаковыми и при чётной длине списка и при нечётной:
Обратный список Python
При работе со списками в Python иногда может потребоваться перевернуть элементы списка. Обратное преобразование списка означает, что первый элемент списка становится последним, второй — предпоследним, последний элемент становится первым и так далее.
В Python есть несколько разных способов перевернуть список, в зависимости от того, что вы пытаетесь сделать.
reverse() метод
reverse() — это метод типа данных списка, который меняет местами элементы списка. Этот метод изменяет исходный список, а не создает новый.
Синтаксис метода reverse() следующий:
reverse() не принимает аргументы.
функция reversed()
reversed() — это встроенная функция Python, которая возвращает обратный итератор заданного итеративного объекта. Исходный список не изменяется.
Если вы хотите перебирать элементы списка только в обратном порядке, предпочтительнее использовать функцию reversed() , так как это быстрее, чем перестановка элементов на месте`.
Синтаксис функции reversed() следующий:
Где seq — это список, который нужно восстановить.
Ниже приведен пример использования функции reversed() для перебора элементов списка в обратном порядке:
Если вы хотите преобразовать обратный итератор в список, используйте конструктор list() :
Перевернуть список с помощью нарезки
Нотация срезов — это встроенная функция Python, которая позволяет извлекать части последовательного типа данных. Хотя это и не очень Pythonic, вы можете использовать нотацию [::-1] перевернув список:
Результатом нарезки списка является новый список, содержащий извлеченные элементы. Исходный список не изменяется.
Выводы
Чтобы перевернуть список Python на месте, используйте метод reverse() . Если вам нужно создать только обратный итератор, используйте функцию reversed() .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как поменять местами первую и вторую половины НЕЧЕТНОГО списка?

Если же в задании строго запрещены срезы списков, то итерируйся по длине списка, прибавляй туда длину первой половины списка и бери остаток от деления на длину списка, чтобы когда твой итератор уйдёт за пределы списка, индекс перешёл в начало списка.
Не знаю, зачем тебе решение, если тебе (наверное) хочется подумать головой, но вот:
Обратный список в Python
Давайте рассмотрим все эти способы, как вывести список в обратном порядке на простых примерах.
С использованием функции reverse()

Это очень быстрая функция, которая меняет местами элементы списка, таким образом, исходный список изменяется. Иногда это не нужно и требуется создать новый список в обратном порядке.
Перевернуть и создать новый список с помощью нарезки
Мы можем использовать нарезку для создания нового списка в обратном порядке. Давайте посмотрим на пример.

Здесь исходный список не изменяется. Это простой однострочный способ перевернуть список.
С помощью reversed()
Мы можем использовать встроенную функцию reversed() для создания обратного итератора, а затем использовать его с функцией list() для создания нового списка с элементами в обратном порядке.

Заключение
Если вы хотите перевернуть список, используйте функцию reverse(). Однако, если вы хотите сохранить исходный список нетронутым, вы можете использовать нарезку, а также итератор reversed().