Я хочу знать, как работает оператор + =?
оператор присваивания на месте +=
работает двумя способами (из документов ) :
1) Для неизменяемых объектов
Для неизменяемых целей, таких как строки, числа и кортежи, обновленное значение вычисляется, но не присваивается обратно входная переменная
это означает, что вы будете создавать новый объект каждый раз, когда +=
используется (если ваш объект неизменен)
2) Для изменяемых объектов
Для изменяемых целей, таких как списки и словари, метод на месте выполнит обновление, поэтому последующее назначение не требуется
это означает, что вы будете не создавать новый объект каждый раз, когда используется +=
(если ваш объект изменчив)
В вашем примере, чтобы использовать li+=i
, вы должны убедиться, что i
является списком, в противном случае не будет работать
Здесь:
li = []
for i in 'string':
li = li + [i]
вы объединяете 2 списка, но каждый Когда вы создаете новый список li
, вы можете проверить с помощью встроенной функции id :
li=[]
for i in '1':
print(id(li))
li=li+[i]
print(id(li))
output:
140661631713104
140661644452240
you можно использовать оператор присваивания на месте +=
следующим образом:
li=[]
for i in '1':
print(id(li))
li += [i]
print(id(li))
output:
140661641698592
140661641698592
, поскольку вы можете видеть, что элементы добавляются в список li
без создания новый li
список, который более эффективен, работает аналогично list.extend
, чтобы добавить другой элемент в ваш список, не используя список, вы можете использовать list.append