Автор оригинала: Team Python Pool.
9 Способов объединения списков в Python
Одной из наиболее важных структур данных, используемых в Python, является список. Он имеет различные варианты использования в Python, так как является изменяемым, может содержать значения любого другого типа данных в том же списке. Кроме того, мы можем иметь элемент с равным значением более одного раза (что невозможно в наборах) и подкрепляться множеством различных методов, что делает нашу жизнь намного проще. В Python мы можем объединить несколько списков в href=”https://docs.python.org/3/tutorial/datastructures.html#more-on-lists”>единый список без каких-либо хлопот. href=”https://docs.python.org/3/tutorial/datastructures.html#more-on-lists”>единый список без каких-либо хлопот.
В этой статье мы рассмотрим несколько способов достижения сцепленных списков. Некоторые другие стандартные термины объединяют список, объединяют список и присоединяют список.
- <Использование наивного метода для объединения списка в python
- Использование функции расширения Python
- Функция добавления
- Использование оператора +
- Понимание списка
- Использование оператора *
- Использование itertools.chain()
- Объединить списки в словарь Python
- Объединить списки в Python в фрейм данных
Использование наивного метода для объединения списков в Python
Наивный метод-это метод, который первым приходит на ум при размышлении о том, как выполнить ту или иную задачу. Он не оптимизирован и, как правило, имеет большую временную сложность, чем другие методы.
Мы будем использовать цикл for для объединения двух списков-
list1=[1,2,3,4] list2=[5,6,7,8] for i in list2: # appending the elements of list2 into list1 list1.append(i) print(list1)
Output- [1, 2, 3, 4, 5, 6, 7, 8]
Объединение более двух списков в Python
list1=[1,2,3,4] list2=[5,6,7,8] list3=[9,10,11,12] for i in list2: # appending the elements of list2 into list1 list1.append(i) for i in list3: # appending the elements of list3 into list1 list1.append(i) print(list1)
Output- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Вы можете подумать, что это простой метод. Так почему же мы обычно не используем этот метод и называем его наивным? Ответ прост, мы используем здесь два цикла for, и если у нас есть много списков и в этих списках у нас есть много элементов, то насколько велика будет временная сложность!Вот почему у нас есть разные методы для этой цели.
Использование функции расширения Python
Python имеет встроенную функцию для этой цели- extend. Давайте посмотрим, как это работает-
list1=[1,2,3,4] list2=[5,6,7,8] list2.extend(list1) print(list2)
Output- [5, 6, 7, 8, 1, 2, 3, 4]
Вы можете лучше понять работу этой функции с помощью следующего кода-
list1=[1,2,3,4] list2=[5,6,7,8] print(list2)
Output- [5, 6, 7, 8, 1, 2, 3, 4]
Временная сложность этой функции extend() равна O(k), где k-длина списка, который нам нужно объединить с другим списком.Она меньше временной сложности наивного метода.Кроме того, мы вносим изменения в list2, list1 останется таким, как есть.
list1=[1,2,3,4] list2=[5,6,7,8] print("list2",list2) print("list1",list1)
Output- list2 [5, 6, 7, 8, 1, 2, 3, 4] list1 [1, 2, 3, 4]
Использование функции добавления
Функция добавления может быть использована для добавления одного полного списка в другой список. Это означает, что элементы не будут добавлены один за другим, но полный список будет добавлен в тот же индекс. Не волнуйтесь, если вы не понимаете. Мы поймем это на примере.
list1=[1,2,3,4 list2=[5,6,7,8] list1.append(list2) print(list1)
Output- [1, 2, 3, 4, [5, 6, 7, 8]]
Вы наверняка заметили бы изменение по сравнению с предыдущим выводом.Он имеет временную сложность O(1).
Использование оператора +
Да. Ты все правильно прочитал. Мы можем объединить любые списки с помощью оператора+.
list1=[1,2,3,4] list2=[5,6,7,8] list3=[9,10,11,12]+list2+list3 print(list4)
Output- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Разница между этим методом и другими методами, которые мы изучили до сих пор, заключается в том, что в этом методе мы объединяем три разных списка в другой список. Во всех предыдущих случаях изменение происходило в одном из списков.
Использование понимания списка
flower1=['sunflower','lotus','rose'] flower2=['marigold','lily','tulip' flowers=[y for x in (flower1,flower2) for y in x] print(flowers)
Output- ['sunflower', 'lotus', 'rose', 'marigold', 'lily', 'tulip']
Использование оператора *
Если вы никогда не использовали оператор * в списке или других типах данных, таких как кортеж, вы будете рады узнать, насколько он полезен. Он используется для распаковки списка. Например-
list1=[1,2,3,4,5] print(*list1)
Output- 1 2 3 4 5
Разве это не прекрасно? Лично я нахожу этого оператора очень полезным. Теперь давайте посмотрим, как оператор * можно использовать для объединения различных списков в python.
list1=[1,2,3,4,5] list2=[6,7,8,9] list3=[list1,list2] print(list3)
Output- [1, 2, 3, 4, 5, 6, 7, 8, 9]
Если мы хотим, мы можем использовать это для объединения различных списков в кортеж или набор.
list1=[1,2,3,4,5] list2=[6,7,8,9],list2 print(new_tuple) print("type: ",type(new_tuple))
Output- (1, 2, 3, 4, 5, 6, 7, 8, 9) type:
list1=[1,2,3,4,5] list2=[6,7,8,9] new_set={list1,list2} print(new_set) print("type: ",type(new_set))
Output- {1, 2, 3, 4, 5, 6, 7, 8, 9} type:
Использование itertools.chain()
Мы можем импортировать пакет itertools python и использовать его цепную функцию для объединения списков. Для импорта используйте – from itertools import chain
from itertools import chain list1=[1,2,3,4,5] list2=[6,7,8,9](chain(list1,list2)) print(list3)
Output- [1, 2, 3, 4, 5, 6, 7, 8, 9]
Поскольку мы знаем, что itertools возвращает объект, мы сначала должны ввести его в тип данных list, а затем распечатать.
Объедините списки в словарь Python
Существует так много способов преобразования двух списков в словарь в качестве ключевого значения, но мы рассмотрим здесь только самый распространенный и эффективный способ.
names=["ashwini","ashish","arya"] marks=[40,47,32](zip(names,marks)) print(student_info)
Output- {'ashwini': 40, 'ashish': 47, 'arya': 32}
Объедините списки в Python в фрейм данных
import pandas as pd list1=[1,2,3,4,5] list2=[6,7,8,9,10].DataFrame(list1,columns=["Values"]).DataFrame(list2,columns=["Values"]).concat((df1,df2)) print(final_df)
Output- Values 0 1 1 2 2 3 3 4 4 5 0 6 1 7 2 8 3 9 4 10
Предположим, если мы хотим объединить эти два списка 2 в разных столбцах фрейма данных-
import pandas as pd list1=[1,2,3,4,5] list2=[6,7,8,9,10].DataFrame(columns=['list1','list2']),list2 print(df)
Output- list1 list2 0 1 6 1 2 7 2 3 8 3 4 9 4 5 10
Должен Читать
Распакуйте файл в Python: 5 Сценариев, которые вы должны знатьПонимание последовательности Collatz в PythonЛучшие способы вычисления факториала с помощью Numpy и SciPy
Вывод
Мы изучили так много методов, с помощью которых мы можем объединить несколько списков в Python. Вы должны выбрать любой из них в соответствии с вашими потребностями. Мы рассмотрели, как объединить эти списки в виде фрейма данных, наборов, кортежей и в виде пар ключей и значений в словаре. Пожалуйста, дайте нам знать в разделе комментариев, если вы используете какие-либо другие методы.