Как и предлагали другие ответы, вы можете предоставить своей функции копию списка.
В качестве альтернативы ваша функция может получить копию аргумента:
def burninate(b):
c = []
b = list(b)
for i in range(3):
c.append(b.pop())
return c
По сути, вы должны четко представлять себе (и документацию), будет ли ваша функция менять свои аргументы. По моему мнению, функции, которые возвращают вычисленные значения, не должны изменять свои аргументы, а функции, которые изменяют свои аргументы, не должны ничего возвращать. См. [] .Sort (), [] .extend (), {} .update () и т. Д. Для Python. Очевидно, есть исключения (например, .pop ()).
Кроме того, в зависимости от вашего конкретного случая, вы можете переписать функцию, чтобы избежать использования pop () или других функций, которые изменяют аргумент. например, * +1008 *
def burninante(b):
return b[:-4:-1] # return the last three elements in reverse order