Оператор конкатенации +
- это бинарный инфиксный оператор, который при применении к спискам возвращает новый список, содержащий все элементы каждого из двух его операндов. list.append()
Метод является mutator
на list
который присоединяет свой единственный object
аргумент (в вашем конкретном примере списка c
) к предмету list
. В вашем примере это приводит к c
добавлению ссылки на себя (отсюда и бесконечная рекурсия).
Альтернатива конкатенации '+'
Этот list.extend()
метод также является методом мутатора, который объединяет свой sequence
аргумент с субъектом list
. В частности, он добавляет каждый из элементов sequence
в порядке итерации.
В сторону
Являясь оператором, +
возвращает результат выражения в виде нового значения. Поскольку это mutator
метод без цепочки , он list.extend()
изменяет список тем на месте и ничего не возвращает.
Массивы
Я добавил это из-за потенциальной путаницы, которую может вызвать приведенный выше ответ Абеля, смешав обсуждение списков, последовательностей и массивов.
Arrays
были добавлены в Python после последовательностей и списков, как более эффективный способ хранения массивов целых типов данных. Не путайте arrays
с lists
. Они не одинаковы.
Из документов массива :
Массивы являются последовательными типами и ведут себя очень похоже на списки, за исключением того, что тип хранимых в них объектов ограничен. Тип указывается во время создания объекта с помощью кода типа, который представляет собой один символ.