Я полный новичок для Python, поэтому, пожалуйста, вы могли бы объяснить мне, почему происходит следующая ситуация. Рассмотрим следующий код:Python slice показывает то же местоположение id
>>> A = [1, 2, 3, 4]
>>> B = A[0:2]
>>> print id(A) == id(B)
False
>>> print id(A[0]) == id(B[0])
True #Why?
>>> A[0] = 9
>>> A
[9, 2, 3, 4]
>>> B
[1, 2]
>>> print id(A[0]) == id(B[0])
False #Contradiction?
Как вы можете видеть из приведенного выше кода, я Нарезать список А и скопировать его в B, но, почему print id(A[0]) == id(B[0])
расценивается True
на первый, но наоборот, когда я изменить либо от значения A или B?
[CPython кэширует небольшие целые числа] (http://stackoverflow.com/questions/306313/is-operator-behaves-unexpectedly-with-integers), поэтому любое значение от -5 до 256 будет иметь тот же идентификатор в любое время вы Проверь это. –
http://stackoverflow.com/questions/28329498/why-does-a-space-affect-the-identity-comparison-of-equal-strings/28329522#28329522 –