Как объединить два списка в Python

Введение Объединение списков - это процесс создания единого списка из нескольких меньших списков путем их последовательного соединения. В Python есть много способов объединения списков. В частности, в этой статье мы рассмотрим, как объединить два списка в Python с помощью оператора плюс, оператора распаковки, оператора умножения, руководства по объединению циклов, функции itertools.chain () и встроенного метода списка extend (). . Во всех приведенных ниже фрагментах кода мы будем использовать следующие

Вступление

Объединение списков - это процесс создания единого списка из нескольких меньших списков путем их последовательного соединения.

В Python есть много способов объединения списков. В частности, в этой статье мы рассмотрим, как объединить два списка в Python с помощью оператора плюс, оператора распаковки, оператора умножения, руководства по объединению циклов, функции itertools.chain() и встроенного метода списка extend() .

Во всех приведенных ниже фрагментах кода мы будем использовать следующие списки:

 list_a = [1, 2, 3, 4] 
 list_b = [5, 6, 7, 8] 

Объединение списка операторов Plus

Самый простой и понятный способ объединить два списка в Python - это + ):

 list_c = list_a + list_b 
 print (list_c) 

 [1, 2, 3, 4, 5, 6, 7, 8] 

Объединение списка операторов распаковки

Этот метод позволяет объединить несколько списков. Это довольно новая функция, доступная только в Python 3.6+ . Оператор распаковки, как следует из названия, распаковывает iterable объект в его элементы. Распаковка полезна, когда мы хотим сгенерировать множество аргументов из одного списка. Например:

 def foo(a, b, c, d): 
 return a + b + c + d 
 
 # We want to use the arguments of the following list with the foo function. 
 # However, foo doesn't take a list, it takes 4 numbers, which is why we need to 
 # unpack the list. 
 foo(*list_a) 
 # This is the same as if we were to call foo(1,2,3,4) 

 10 

Вкратце, мы используем конструктор списка ( [a,b..] ) и генерируем элементы нового списка по порядку, распаковывая несколько списков один за другим:

 list_c = [*list_a, *list_b, *list_a] 
 # This is the same as: 
 # list_c = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4] 
 print (list_c) 

 [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4] 

Объединение списков операторов умножения

Оператор multiply ( * ) - это частный случай конкатенации списков в Python. Он используется для многократного повторения всего списка (поэтому он обозначается оператором умножения):

 print(list_a * 2) 

 [1, 2, 3, 4, 1, 2, 3, 4] 

для конкатенации списка циклов

В этом методе мы пройдемся по одному списку, добавляя каждый из его элементов в другой список один за другим. Когда цикл закончится, у вас будет единый список со всеми желаемыми элементами:

 for i in list_b: 
 list_a.append(i) 
 print (list_a) 

 [1, 2, 3, 4, 5, 6, 7, 8] 

itertools.chain () Объединение списков

Этот метод работает с iterables . Он создает и возвращает итератор, который позже можно использовать для создания связанного списка (представьте его как стрелку, которая просто запоминает порядок элементов в результирующем списке):

 # If we were to call itertools.chain() like so 
 iterator = itertools.chain([1, 2], [3, 4]) 
 
 # Basically the iterator is an arrow which can give us the next() element in a sequence, so if we call a list() constructor with said iterable, it works like this: 
 list(iterator) 

Под капотом происходит что-то в этом роде:

 # Iterator: The next element in this list is 1 
 [1, 2], [3, 4] 
 ^ 
 # Iterator: The next element in this list is 2 
 [1, 2], [3, 4] 
 ^ 
 # Iterator: The next element in this list is 3 
 [1, 2], [3, 4] 
 ^ 
 # Iterator: The next element in this list is 4 
 [1, 2], [3, 4] 
 ^ 
 # So the list() call looks something like: 
 list([1,2,3,4]) 
 
 # Keep in mind this is all pseudocode, Python doesn't give the developer direct control over the iterator 

Для этого метода вам нужно будет импортировать itertools :

 import itertools 
 
 list_c = list(itertools.chain(list_a, list_b)) 
 print (list_c) 

 [1, 2, 3, 4, 5, 6, 7, 8] 

extension () конкатенация списков

Это встроенная функция, которую можно использовать для расширения списка. Здесь мы расширяем первый список, добавляя в него элементы второго списка:

 list_a.extend(list_b) 
 
 print (list_a) 

 [1, 2, 3, 4, 5, 6, 7, 8] 

Заключение

В этой статье мы рассмотрели пять способов объединения двух списков в Python - с помощью оператора плюс, оператора распаковки, оператора умножения, цикла for, itertools.chain() и extend() .

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus