list.reverse
отменяет на месте и возвращает None, поэтому
for items in some_2d_list:
items = items.reverse()
отменяет существующий список, который все еще находится в some_2d_list
, и назначает None
для items
.
Когда вы вводите блок кода в for items in some_2d_list
, items
является ссылкой на объект, все еще в some_2d_list
. Все, что изменяет существующий список, также влияет на some_2d_list
. например
>>> some_2d_list = [['mean', 'really', 'is', 'jean'],
... ['world', 'my', 'rocks', 'python']]
>>>
>>> for items in some_2d_list:
... items.append('foo')
... del items[1]
...
>>> some_2d_list
[['mean', 'is', 'jean', 'foo'], ['world', 'rocks', 'python', 'foo']]
Расширенные операции, такие как "+ =", являются неоднозначными. В зависимости от того, как реализован данный тип, он может обновляться на месте или создавать новые объекты. Они работают для списков
>>> some_2d_list = [['mean', 'really', 'is', 'jean'],
... ['world', 'my', 'rocks', 'python']]
>>>
>>> for items in some_2d_list:
... items += ['bar']
...
>>> some_2d_list
[['mean', 'really', 'is', 'jean', 'bar'], ['world', 'my', 'rocks', 'python', 'bar']]
, но не для кортежей
>>> some_2d_list = [('mean', 'really', 'is', 'jean'), ('world', 'my', 'rocks', 'python')]
>>> for items in some_2d_list:
... items += ('baz',)
...
>>> some_2d_list
[('mean', 'really', 'is', 'jean'), ('world', 'my', 'rocks', 'python')]