Каков будет результат выполнения выражения `2*[2] + [2]` в Python?
Подробное объяснение
В Python оператор `*` применительно к списку повторяет его содержимое заданное количество раз. Выражение `2 * [2]` создает список `[2, 2]`. Затем оператор `+` выполняет конкатенацию списков, объединяя `[2, 2]` и `[2]`, что дает в итоге список `[2, 2, 2]`. Таким образом, переменная `result` будет содержать список из трёх элементов, каждый из которых равен 2.
Часто задаваемые вопросы (FAQ)
1
Как работает умножение списка на число в Python?
Умножение списка на целое число n создаёт новый список, в котором исходный список повторён n раз. Например, `[1, 2] * 3` даст `[1, 2, 1, 2, 1, 2]`.
2
Можно ли использовать оператор `+` для объединения списков разных типов?
Нет, оператор `+` для списков требует, чтобы оба операнда были списками. Если попытаться сложить список с другим типом данных (например, число), возникнет ошибка TypeError.
3
Что произойдёт, если умножить список на 0?
Умножение списка на 0 даёт пустой список. Например, `[1, 2, 3] * 0` вернёт `[]`.
Типичные ошибки
1
Ошибочно считать, что `2*[2]` даёт `[4]`
Некоторые думают, что умножение списка на число умножает каждый элемент списка на это число, но на самом деле оператор `*` повторяет список, а не умножает числа внутри него.
2
Путать конкатенацию с поэлементным сложением
В отличие от массивов NumPy, оператор `+` для списков не складывает элементы поэлементно, а просто объединяет списки.
3
Предполагать, что `2*[2] + [2]` равно `[2, 2, 2, 2]`
Приоритет операторов в Python таков, что умножение выполняется раньше сложения, поэтому сначала вычисляется `2*[2]`, а потом `+ [2]`. Если бы не было скобок, порядок мог быть неверно интерпретирован.