В чем разница между обращением списка на месте и обращением с использованием нарезки в python?

#python #list #slice

#python #Список #срез

Вопрос:

 s[:] = s[::-1]
  

против

 s = s[::-1]
  

Пожалуйста, объясните разницу между достижением результата с использованием вышеуказанных методов.

Ответ №1:

Первое изменяет сам исходный список. Второй создает новый список и присваивает его обратно переменной.

 >>> s = [1,2,3]
>>> id(s)
2186036088200        # original id
>>> s[:] = s[::-1]
>>> id(s)
2186036088200        # still same id
>>> s = s[::-1]
>>> id(s)
2186036085000        # new id, because new list was created
  

Первый метод называется «назначение среза».