MiddleКодИногдаЕщё не отвечали
Что выведут += и + для этих связанных списков?
Предскажите обе строки print(b).
a = [1, 2, 3]
b = a
a += [4] # (1)
print(b)
a = [1, 2, 3]
b = a
a = a + [4] # (2)
print(b)
Определите вывод и объясните.
[1, 2, 3, 4], затем [1, 2, 3]. += для списка вызывает __iadd__, изменяя объект на месте, поэтому b (тот же объект) это видит. a = a + [4] строит новый список и переназначает a, оставляя b на исходном — изменение против переназначения.
- ✗Считать, что
+=и+ведут себя одинаково для списков - ✗Думать, что
b = aкопирует список - ✗Не различать изменение на месте и переназначение
- →Что возвращает
__iadd__и почему это важно для переназначения? - →Как изменился бы результат, будь
aкортежем, а не списком?