Замена элемента в списке по его индексу
В результате элемент с индексом 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 с сохранением очередности
Поменять местами соседние элементы списка

Поменять местами наибольший и наименьший элементы списка
В собачьих бегах участвует 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