Почему функция pop не извлекает правильный индекс после функции добавления?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему функция pop не извлекает правильный индекс после функции добавления?

Сообщение Anonymous »

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

Код: Выделить всё

from collections.abc import Iterable

def replace_first(x: list) -> Iterable:
x.append(x[0])
x.pop(x[0])
return x

print("Example:")
print(list(replace_first([1, 2, 3, 4])))
Когда я запустил код, он вернул следующее:

Код: Выделить всё

Example:
[1, 3, 4, 1]
Чего я ожидал:

Код: Выделить всё

Example:
[2, 3, 4, 1]
Я подумал, что это странно, потому что я предполагаю, что 2 по-прежнему будет иметь индекс [1] после добавления. Поэтому я проверил это, распечатав все элементы нового списка по индексу после добавления.

Код: Выделить всё

from collections.abc import Iterable

def replace_first(x: list) -> Iterable:
x.append(x[0])
print(x[0])
print(x[1])
print(x[2])
print(x[3])
print(x[4])
x.pop(x[0])
return x

print("Example:")
print(list(replace_first([1, 2, 3, 4])))
Что вернулось

Код: Выделить всё

Example:
1
2
3
4
1
[1, 3, 4, 1]
Поэтому я немного не понимаю, что именно происходит. То, что я напечатал, показывает, что новый индекс соответствует моим ожиданиям. Этот 2 имеет индекс [1], но при использовании функции pop по индексу [0] он удаляет [1].
Я знаю, что упражнение можно выполнить таким образом,
Я знаю, что упражнение можно выполнить таким образом,
п>

Код: Выделить всё

from collections.abc import Iterable

def replace_first(x: list) -> Iterable:

if x:
x.append(x.pop(0))
return x
Но я пытаюсь понять, что происходит с функцией pop в приведенном выше примере. Любое объяснение или рекомендуемая литература будут оценены по достоинству. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... d-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»