Ответ 1
Как я уже упоминал в комментарии, +=
фактически изменяет список на месте, а затем пытается назначить результат первой позиции в кортеже. Из документации по модели данных:
Эти методы вызывают для реализации расширенных арифметических присвоений (+ =, = =, =,/=,//=,% =, * =, < =, → =, & =, ^ =, | =). Эти методы должны пытаться выполнить операцию на месте (модифицировать "я" ) и возвращать результат (который может быть, но не обязательно, сам).
+=
поэтому эквивалентен:
t[0].extend(['world']);
t[0] = t[0];
Таким образом, изменение списка на месте не является проблемой (шаг 1.), так как списки изменяемы, но присвоение результата обратно кортежу недействительно (2. шаг) и то, где происходит ошибка.