Дополнительно
Как получить конкатенацию двух списков в Python, не изменяя ни один из них?
В Python единственным способом конкатенации двух списков является функция list.extend
, которая модифицирует первый список. Существует ли какая-либо функция конкатенации, которая возвращает результат без изменения аргументов?
633
7
Да:
list1+list2
. Это дает новый список, который является конкатенациейlist1
иlist2
.В зависимости от того, как вы'ре собирается использовать его, когда он's создавал
модуле itertools.цепь
может быть ваш лучший выбор:Это создает генератор для элементов в комбинированном списке, который имеет то преимущество, что не новый список должен быть создан, но вы все еще можете использовать
с
, как будто это конкатенация двух списков:Если списки большие, а эффективность является проблемой, то это и других методов из модуля
модуле itertools
очень полезно знать.Обратите внимание, что этот пример использует предметы на
C
, так что вы'd нужен для установки исходных его, прежде чем вы можете использовать его. Конечно, вы можете просто использовать список(С)`, чтобы создать полный список, но это будет создать новый список в памяти.конкатенированный_список = список_1 + список_2
.Вы также можете использовать
сумма
, если вы даете ему "старт" аргумент:Это работает в общем для всего, что оператор
+
:За исключением строк:
всегда можно создать новый список, который является результатом сложения двух списков.
Списки являются изменяемыми последовательностями, поэтому, я думаю, имеет смысл модифицировать исходные списки путем расширения или добавления.
И если у вас есть более чем два списка объединить:
Это не'т спасти вас в любое время (промежуточных списков до сих пор создается), но хороший, если у вас есть переменная количество списков, чтобы сгладить, например,
*аргументы
.Просто чтобы вы знали:
Когда вы пишете
список1 + список2
, вы зовете__добавить метод__
в "список 1", который возвращает новый список. таким образом, вы также можете бороться смой_объект + список1
добавив__добавить метод__
на ваш персональный класс.