Присвоение значения элементу среза в Python

Это простой вопрос о том, как Python обрабатывает данные и переменные. Я много экспериментировал и в основном разобрался с Python, но это меня постоянно сбивает:

Я много экспериментировал и в основном разобрался с Python, за исключением того, что меня это сбивает с толку: [edit: Я разделил и ...

Это простой вопрос о том, как Python обрабатывает данные и переменные. Я много экспериментировал и в основном разобрался с Python, но это меня постоянно сбивает:

Я много экспериментировал и в основном разобрался с Python, за исключением того, что меня это сбивает с толку: [edit: Я разделил и ...

Это простой вопрос о том, как Python обрабатывает данные и переменные. Я много экспериментировал и в основном разобрался с Python, но это меня постоянно сбивает:

[edit: Я разделил и переставил примеры для ясности]

Пример 1:

>>> a = [[1], 2]
>>> a[0:1]
[[1]]
>>> a[0:1] = [[5]]
>>> a
[[5], 2] # The assignment worked.

Пример 2:

>>> a = [[1], 2]
>>> a[0:1][0]
[1]
>>> a[0:1][0] = [5]
>>> a
[[1], 2] # No change?

Пример 3:

>>> a = [[1], 2]
>>> a[0:1][0][0]
1
>>> a[0:1][0][0] = 5
>>> a
[[5], 2] # Why now?

Кто-нибудь может мне объяснить, что здесь происходит?

Итак в ответах вроде бы утверждается, что a [0: 1] возвращает новый список, содержащий ссылку на первый элемент a . Но я не понимаю, как это объясняет Пример 1.

7
задан dln385 29 October 2010 в 20:52
поделиться