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

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

  • автор:

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

После определения максимума и минимума в списке не могу понять, как поменять их местами. Пробовал по индексу, типа minimum[i], но вижу ошибку TypeError: ‘int’ object is not subscriptable. Прошу помощи.

  • Вопрос задан более года назад
  • 1148 просмотров

Комментировать
Решения вопроса 1

Vindicar

Включи логику.
Чтобы прочитать/записать элемент списка, нужно знать его индекс.
Ты знаешь значение минимума/максимума, но не индекс.
Вывод: нужно в цикле поиска обновления не только само значение minimum и maximum, но и в отдельной паре переменных хранить индекс i, где был обнаружен последний минимум/максимум.

Любопытно, что ты уже используешь enumerate() для перечисления списка, но до сих пор не использовал индекс очередного элемента i, который он тебе сообщает.

Ответ написан более года назад
Emince @Emince Автор вопроса

В том то и дело, я не могу понять, как сделать print(maximum[i] ) — работает,
i_max = maximum[i]
print(i_max) — не работает

Vindicar

Emince, перечитай мой ответ.

в отдельной паре переменных хранить индекс i, где был обнаружен последний минимум/максимум

И да, конечно же, minimum[i] никогда не будет работать. Переменная minimum хранит число, что ты вообще ожидаешь получить, пытаясь применить к числу операцию получения элемента?

Emince @Emince Автор вопроса

Ок, сделал 2 переменные, присвоил им индексы мин и макс, как заменить их в списке?

point_list = [] dog_numbers = int(input('Введите количество собак: ')) for _ in range(dog_numbers): dog_point = int(input('Введите очки собак: ')) point_list.append(dog_point) print(point_list) maximum = point_list[0] minimum = point_list[0] i_max = 0 i_min = 0 for i, number in enumerate(point_list): if number > maximum: maximum = number i_max = i elif number < minimum: minimum = number i_min = i print(i_max, i_min)

Vindicar

Emince, есть классический способ поменять местами значения двух переменных (для примера a и b), пригоден для большинства языков. Мог бы и додуматься, если честно.

temp = a a = b b = temp

В питоне есть еще вот такая идиома:
a, b = b, a # тоже поменяет значения местами

В твоём случае ты оперируешь не переменными a и b, а элементами массива point_list[i_min] и point_list[i_max]. Дальше сам.

Emince @Emince Автор вопроса

point_list = [] dog_numbers = int(input('Введите количество собак: ')) for _ in range(dog_numbers): dog_point = int(input('Введите очки собак: ')) point_list.append(dog_point) print(point_list) maximum = point_list[0] minimum = point_list[0] i_max = 0 i_min = 0 for i, number in enumerate(point_list): if number > maximum: maximum = number i_max = i elif number < minimum: minimum = number i_min = i point_list[i_min], point_list[i_max] = point_list[i_max], point_list[i_min] print(point_list)

Спасибо! Сегодня первый день знакомства со списками. Про схему temp = a я думал, но не знал, как правильно описать ее.

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

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

Отслеживать
ответ дан 26 дек 2018 в 17:56
54.2k 3 3 золотых знака 20 20 серебряных знаков 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
75.3k 120 120 золотых знаков 38 38 серебряных знаков 57 57 бронзовых знаков

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

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

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

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

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

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

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

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

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

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

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

Эксперт С++

13525 / 10771 / 6420
Регистрация: 18.12.2011
Сообщений: 28,752

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)

3662 / 1866 / 601
Регистрация: 21.11.2021
Сообщений: 3,654

Лучший ответ

Сообщение было отмечено 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)

Любознательный
5678 / 1692 / 315
Регистрация: 10.03.2016
Сообщений: 3,853

ЦитатаСообщение от 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)

Вирусоборец

13124 / 7271 / 1539
Регистрация: 06.09.2009
Сообщений: 26,555

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]

Похожие записи:
  1. Декораторы в Python
  2. Стек — Max
  3. Форматирование списка
  4. Стек — MaxEffective

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

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