Правильно ли я меняю элементы из списка? - PullRequest
0 голосов
/ 19 сентября 2018

Информация: я студент HS, который изучает, как кодировать, и я не знаю никого, кто мог бы проверить мою логику для меня, поэтому я использую добрые души переполнения стека, чтобы помочь проверить мое мышление.

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

my_list = [1, 2]

my_list[0], my_list[1] = my_list[1], my_list[0]

print(my_list)

Output:
[2, 1]

Вот то, что я думаю, что это делает.Я устанавливаю то, что всегда находится в 0-й позиции my_list =, в значение, которое находится в 1-й позиции my_list, что в основном говорит: «Эй, торгуйте!».Затем я делаю то же самое с первой позицией my_list, принимаю, что я установил = то, что всегда находится на 0-й позиции моего списка.Я думаю, что это делает, и исправьте меня, если я ошибаюсь, это то, что устанавливает значение 0-й позиции = значение 1-й позиции, и это устанавливает значение 1-й позиции = значение 0-гопозиция.Это в свою очередь изменяет значения элементов списка, создавая впечатление, что они поменялись местами.Это правильно или я обдумываю это?Я знаю, это звучит как базовое задание, но я хочу убедиться, что я полностью понимаю эту концепцию обмена.

1 Ответ

0 голосов
/ 19 сентября 2018

Ответ на актуальный вопрос.Во время обмена происходит следующее:

  1. Python вычисляет то, что находится справа от оператора =.То есть Python получает два значения my_list[1] и my_list[0], которые 2 и 1.Затем Python упаковывает значения в кортеж (2, 1).

  2. . Python присваивает кортеж (2, 1) переменной слева от оператора =.

  3. В левой части оператора = есть две переменные И кортеж (2, 1) содержит ровно 2 элемента.Поэтому Python распаковывает кортеж, затем присваивает 2 первой переменной (которая оказалась первым элементом списка my_list) и присваивает 1 второй переменной.

Таким образом, обмен значениями получается путем упаковки и выгрузки скрытых от пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...