Перейти к содержимому

Как поменять местами элементы в списке python

  • автор:

Замена элемента в списке по его индексу

В результате элемент с индексом i из последовательности sequence получит новое значение (заменится) на объект x .

Если индекс i отрицателен, то индекс будет считаться относительно конца последовательности sequence . В этом случае положительный индекс можно посчитать по формуле len(sequence) — i .

Обратите внимание, что -0 по-прежнему будет 0.

При попытке заменить значение элемента с индексом, превышающим длину последовательности len(sequence) поднимается исключение IndexError .

Эта операция поддерживаются изменяемыми типами последовательностей.

Примеры изменения элемента списка по индексу.

>>> x = [2, 5, 8, 11, 14, 17] >>> x[1] = 150 >>> x # [2, 150, 8, 11, 14, 17] >>> x[-1] = 100 >>> x # [2, 150, 8, 11, 14, 100] x = ['el_1', 'el_2', 'el_3'] >>> x[2] = 'lorem' >>> x # ['el_1', 'el_2', 'lorem'] # замена элемента неизменяемой # последовательности невозможна >>> x[3] = 'foo' # Traceback (most recent call last): # File "", line 1, in # IndexError: list assignment index out of range 

Замена элементов в списке по условию.

Например, имеем числовой список, в котором присутствуют как целые, так и вещественные числа. Необходимо получить тот же список, в котором вещественные числа округлены до целых.

В данном случае можно поступить 2-мя способами: первый — это создать новый пустой список и в цикле for/in добавлять в него значения, округляя все элементы до целого, из первого списка. Недостаток такого способа: если список огромный то столкнемся с не экономным расходом памяти.

Второй подход — это при каждой итерации по списку, проверять тип числа и если это вещественное число то округлять его до целого и на лету изменять значение в списке по его индексу. Недостаток: скорость обработки списка незначительно уменьшиться.

# имеем числовой список lst = [1, 5.5, 3, 8.2, 11.1, 10, 4, 5.6, 9] # используем функцию `enumerate()` # для определения индекса элемента # при каждой итерации for n, i in enumerate(lst, 0): # проверяем тип числа if type(i) == float: # если float, то округляем i = round(i) # изменяем элемент по индексу lst[n] = i >>> lst # [1, 6, 3, 8, 11, 10, 4, 6, 9] 

Замена элементов вложенных списков.

>>> x = [[2, 150], [11, 14, 17]] >>> x[0] = [0, 0] >>> x # [[0, 0], [11, 14, 17]] >>> x[1][1] = 1000 >>> x # [[0, 0], [11, 1000, 17]] >>> x[0][1] = 'foo' >>> x # [[0, 'foo'], [11, 1000, 17]] >>> x[1] = 'replace' >>> x # [[0, 'foo'], 'replace'] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Изменение/замена элемента списка по индексу
  • Изменение части списка операцией среза
  • Изменение списка срезом c заданным шагом
  • Удаление части списка операцией среза
  • Удаление части списка по срезу с заданным шагом
  • Метод list.append(), добавляет значение в конец списка
  • Метод list.clear(), очищает список
  • Метод list.copy(), копия списка
  • Метод list.extend(), расширяет список другой последовательностью
  • Расширение списка его содержимым
  • Метод list.insert(), вставить элемент по индексу
  • Метод list.pop(), получение с удалением элемент списка
  • Метод list.remove(), удаление элемента списка по значению
  • Метод list.reverse(), разворачивает элементы списка
  • Удаление элемента списка по индексу
  • Удаление дубликатов из списка Python с сохранением очередности

Поменять местами соседние элементы списка

Author24 — интернет-сервис помощи студентам

Поменять местами наибольший и наименьший элементы списка
В собачьих бегах участвует N собак, у каждой из них есть определённое количество очков за сезон. На.

Поменять местами элементы списка с четными и нечетными индексами
Поменять местами элементы списка с четными и нечетными индексами.

Поменять местами первый отрицательный и последний положительный элементы списка
Добрый вечер. Возникли трудности с данной задачей: Поменять местами первый отрицательный и.

Поменять в тексте соседние слова местами
5. Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами.

Эксперт С++

13397 / 10674 / 6379
Регистрация: 18.12.2011
Сообщений: 28,506

1 2 3 4
a=[0,1,2,3,4,5] for i in range(0,len(a)-1,2): a[i],a[i+1] = a[i+1],a[i] print(a)

3067 / 1494 / 506
Регистрация: 21.11.2021
Сообщений: 2,943

Лучший ответ

Сообщение было отмечено mik-a-el как решение

Решение

zss, вы только для n=2 сделали.
Надо типа такого:

1 2 3 4
n = 3 arr = [1,2,3,4,5,6,7,8] res = [arr[i+1] if i%n == 0 else arr[i-1] if i%n == 1 else arr[i] for i in range(len(arr))] print(res)

Любознательный
4914 / 1443 / 294
Регистрация: 10.03.2016
Сообщений: 3,351

ЦитатаСообщение от idealist Посмотреть сообщение

вы только для n=2 сделали.

1 2 3 4
n = 3 arr = [1,2,3,4,5,6,7,8] arr[0::n],arr[1::n]=arr[1::n],arr[0::n] print(arr)

507 / 166 / 51
Регистрация: 12.02.2023
Сообщений: 607

1 2 3 4 5 6 7 8 9 10 11
data = [0,1,2,3,4,5,6,7] n_date = [] d =[] for i in data: n_date.append(i) if len(n_date) > 1: d.append(n_date) n_date.reverse() n_date =[] print(d)

Вирусоборец

13011 / 7175 / 1520
Регистрация: 06.09.2009
Сообщений: 26,331

1 2 3 4
a = [0, 1, 2, 3, 4, 5] for i in range(len(a)//2): a[2*i], a[2*i+1] = a[2*i+1], a[2*i] print(a)

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Переставить соседние элементы массива местами
Напишите программу, которая переставляет соседние элементы массива (1-й элемент поменять с 2-м, 3-й.

Поменять первый и последний элемент списка местами
Написать программу на питоне, которая заполняет список случайными числами. Длина списка получается.

Поменять элементы массива местами
Есть число N и N строк с названиями фильмов. В 2 строках записано 2 числа — индексы в этом массиве.

Поменять местами соседние элементы списка
Дали такое задание : Поменять местами соседние элементы списка.Если количество элементов.

Переставить соседние элементы списка местами
a = for i in range(1, len(a), 2): a, a = a, a print(‘ ‘.join()) как тут уйти от цикла for.

Или воспользуйтесь поиском по форуму:

Поменять местами первый и последний элемент списка

Напишите функцию, которая принимает список и делает первый элемент списка последним. Если список пустой или состоит из одного элемента, он должен остаться неизменным.

Решение:

def replace_first(items): if items: element = items[0] items = items[1:] items.append(element) return items #Более чистый вариант def replace_first(items): return items[1:] + items[:1]

Как менять местами элементы списка?

По обмену — формируется исходный кортеж (tuple) из значений элементов, потом из этих элементов в обратном порядка образуется новый кортеж, значения присваиваются новому кортежу.

Отслеживать
ответ дан 26 дек 2018 в 17:56
52.7k 3 3 золотых знака 19 19 серебряных знаков 43 43 бронзовых знака
А как более понятно это объяснить?
26 дек 2018 в 18:17

@Петрович Например есть список l = [1,2,3,4,5,6,7] . Мы хотим поменять местами первый и последний элементы списка. Пусть k — это индекс элемента списка. k = 0 , индекс первого єдемента списка. Последний элемент имеет ииндекс -1 . Выполняем l[-1], l[k] = l[k], l[-1] . Теперь выводим список на печать print(l) . Получаем [7, 2, 3, 4, 5, 6, 1]

26 дек 2018 в 20:13
27 дек 2018 в 5:42

k = int(input(‘Введите количество подсписков в списке ‘)) m = [] for i in range(0, k+1): arr = list(input(‘введите список ‘).split()) arr[-1], arr[i] = arr[i], arr[-1] m.append(arr) print(m)

27 дек 2018 в 5:43

Список пустой или слишком короткий. Потренируйтесь на m = [1,2,3,4,5] , чтобы убедиться, что обмен работает. Ввод списка — это уже другая задача. Код в комментариях нечитабелен.

27 дек 2018 в 5:46

Попробуйте проанализировать следующий пример:

arr = list(map(int, input('Введите некоторое количество целых чисел через пробел: ').split())) # Например: Введите некоторое количество целых чисел через пробел: 1 2 3 4 5 6 7 print(arr) # [1, 2, 3, 4, 5, 6, 7] k = -1 # индекс последнего элемента списка при первой итерации for i in range(len(arr)//2): print("\nбыло - ", i, arr) arr[k], arr[i] = arr[i], arr[k] print("стало ", arr) k -= 1 """ было - 0 [1, 2, 3, 4, 5, 6, 7] стало [7, 2, 3, 4, 5, 6, 1] было - 1 [7, 2, 3, 4, 5, 6, 1] стало [7, 6, 3, 4, 5, 2, 1] было - 2 [7, 6, 3, 4, 5, 2, 1] стало [7, 6, 5, 4, 3, 2, 1] """ 

Отслеживать
ответ дан 27 дек 2018 в 10:38
73.6k 112 112 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков

  • python
  • python-3.x
  • python-3.5
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.17.3574

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *