Объединить элементы массива python

Преобразование списка в строку методом join

Метод join в Python отвечает за объединение списка строк с помощью определенного указателя. Часто это используется при конвертации списка в строку. Например, так можно конвертировать список букв алфавита в разделенную запятыми строку для сохранения.

Метод принимает итерируемый объект в качестве аргумента, а поскольку список отвечает этим условиям, то его вполне можно использовать. Также список должен состоять из строк. Если попробовать использовать функцию для списка с другим содержимым, то результатом будет такое сообщение: TypeError: sequence item 0: expected str instance, int found .

Посмотрим на короткий пример объединения списка для создания строки.

 
 
vowels = ["a", "e", "i", "o", "u"] vowels_str = ",".join(vowels) print("Строка гласных:", vowels_str)

Этот скрипт выдаст такой результат:

Почему join() — метод строки, а не списка?

Многие часто спрашивают, почему функция join() относится к строке, а не к списку. Разве такой синтаксис не было бы проще запомнить?

Это популярный вопрос на StackOverflow, и вот простой ответ на него:

Функция join() может использоваться с любым итерируемым объектом, но результатом всегда будет строка, поэтому и есть смысл иметь ее в качестве API строки.

Объединение списка с несколькими типами данных

Посмотрим на программу, где предпринимается попытка объединить элементы списка разных типов:

Источник

6 Ways to Concatenate Lists in Python

6 Ways to Concatenate Lists in Python

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

  • concatenation (+) operator
  • Naive Method
  • List Comprehension
  • extend() method
  • ‘*’ operator
  • itertools.chain() method

1. Concatenation operator (+) for List Concatenation

The '+' operator can be used to concatenate two lists. It appends one list at the end of the other list and results in a new list as output.

list1 = [10, 11, 12, 13, 14] list2 = [20, 30, 42] res = list1 + list2 print ("Concatenated list:\n" + str(res)) 
Concatenated list: [10, 11, 12, 13, 14, 20, 30, 42] 

2. Naive Method for List Concatenation

In the Naive method, a for loop is used to traverse the second list. After this, the elements from the second list get appended to the first list. The first list results out to be the concatenation of the first and the second list.

list1 = [10, 11, 12, 13, 14] list2 = [20, 30, 42] print("List1 before Concatenation:\n" + str(list1)) for x in list2 : list1.append(x) print ("Concatenated list i.e. list1 after concatenation:\n" + str(list1)) 
List1 before Concatenation: [10, 11, 12, 13, 14] Concatenated list i.e. list1 after concatenation: [10, 11, 12, 13, 14, 20, 30, 42] 

3. List Comprehension to concatenate lists

Python List Comprehension is an alternative method to concatenate two lists in Python. List Comprehension is basically the process of building/generating a list of elements based on an existing list.

It uses for loop to process and traverses the list in an element-wise fashion. The below inline for-loop is equivalent to a nested for loop.

list1 = [10, 11, 12, 13, 14] list2 = [20, 30, 42] res = [j for i in [list1, list2] for j in i] print ("Concatenated list:\n"+ str(res)) 
Concatenated list: [10, 11, 12, 13, 14, 20, 30, 42] 

4.Python extend() method for List Concatenation

Python’s extend() method can be used to concatenate two lists in Python. The extend() function does iterate over the passed parameter and adds the item to the list thus, extending the list in a linear fashion.

list1 = [10, 11, 12, 13, 14] list2 = [20, 30, 42] print("list1 before concatenation:\n" + str(list1)) list1.extend(list2) print ("Concatenated list i.e ,ist1 after concatenation:\n"+ str(list1)) 

All the elements of the list2 get appended to list1 and thus the list1 gets updated and results as output.

list1 before concatenation: [10, 11, 12, 13, 14] Concatenated list i.e ,ist1 after concatenation: [10, 11, 12, 13, 14, 20, 30, 42] 

5. Python ‘*’ operator for List Concatenation

Python’s '*' operator can be used to easily concatenate two lists in Python.

The ‘*’ operator in Python basically unpacks the collection of items at the index arguments.

For example: Consider a list my_list = [1, 2, 3, 4].

The statement *my_list would replace the list with its elements at the index positions. Thus, it unpacks the items of the lists.

list1 = [10, 11, 12, 13, 14] list2 = [20, 30, 42] res = [*list1, *list2] print ("Concatenated list:\n " + str(res)) 

In the above snippet of code, the statement res = [*list1, *list2] replaces the list1 and list2 with the items in the given order i.e. elements of list1 after elements of list2. This performs concatenation and results in the below output.

Concatenated list: [10, 11, 12, 13, 14, 20, 30, 42] 

6. Python itertools.chain() method to concatenate lists

Python itertools modules’ itertools.chain() function can also be used to concatenate lists in Python.

The itertools.chain() function accepts different iterables such as lists, string, tuples, etc as parameters and gives a sequence of them as output.

It results out to be a linear sequence. The data type of the elements doesn’t affect the functioning of the chain() method.

For example: The statement itertools.chain([1, 2], [‘John’, ‘Bunny’]) would produce the following output: 1 2 John Bunny

import itertools list1 = [10, 11, 12, 13, 14] list2 = [20, 30, 42] res = list(itertools.chain(list1, list2)) print ("Concatenated list:\n " + str(res)) 
Concatenated list: [10, 11, 12, 13, 14, 20, 30, 42] 

Conclusion

Thus, in this article, we have understood and implemented different ways of Concatenating lists in Python.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Источник

Объединение списков в Python: инструкция

Списки в языке программирования Python создаются для хранения объектов одного или нескольких типов. При работе с ними может потребоваться объединить два или несколько списков в один, что актуально, например, при обработке баз данных. В статье мы рассмотрим различные способы выполнения этой операции.

Основные методы объединения списков Python 3

Наиболее часто используются следующие 7 методов (с некоторыми вариантами, которых мы также коснемся):

  • конкатенация с оператором + ,
  • умножение с оператором * ,
  • с циклом for ,
  • с функцией join() ,
  • с функцией extend() ,
  • с функцией map() ,
  • методом itertools.chain() .

Рассмотрим каждый из них более подробно и приведем примеры кода.

Конкатенация с оператором +

Пожалуй, самый простой способ, который не требует особых пояснений:

>>> sequence1 = [57, 69, 45, 25, 36]>>> sequence2 = ['g', 'w', 'm', 'a', 't']>>> joined = sequence1 + sequence2
>>> print(joined)
[57, 69, 45, 25, 36, 'g', 'w', 'm', 'a', 't']

Мы создали два списка с целочисленными и буквенными значениями и объединили их путем простого сложения. Заметим, что при этом все элементы списков останутся на своих местах, то есть сначала будут выведены элементы sequence1 , а уже за ним пойдет sequence2 , причем в той же последовательности.

Умножение с оператором *

Если нужно повторить один и тот же список определенное число раз, подойдет оператор * . Посмотрим на его работу на примере одного из предыдущих списков:

>>> print(sequence2 * 3)
['g', 'w', 'm', 'a', 't', 'g', 'w', 'm', 'a', 't', 'g', 'w', 'm', 'a', 't']

Как видим, все элементы выдаются в той же последовательности заданное число раз.

Варианты с циклом for

Любителям циклического программирования подойдет такой вариант:

>>> numbers1 = [38, 98, 17, 37, 12]>>> numbers2 = [34, 30, 78, 75, 11]>>> for num in numbers2: 
numbers1.append(num)
>>> print(numbers1)
[38, 98, 17, 37, 12, 34, 30, 78, 75, 11]

Мы добавили второй список к первому путем перебора каждого элемента во втором и использования метода append .

Также с помощью цикла for можно выполнить объединение двух вложенных списков Python . Допустим, у нас есть два таких вложенных списка, которые мы должны объединить:

Чтобы это сделать, нужно написать следующий код:

>>> merged = [element for each_list in integers for element in each_list]>>> print(merged)
[60, 85, 57, 31]

Добавим, что имена переменных в коде выше были специально выбраны такими для наглядности, а опытные программисты записали бы этот код примерно в таком виде, с обозначением l для списков и x для их элементов:

>>> merged = [x for l in integers for x in l]>>> print(merged)

Чтобы успешно программировать, всегда нужно понимать, как работает код, поэтому сначала можно делать его более наглядным, а уже затем переходить на общепринятые обозначения.

Цикл for также помогает объединять списки Python в словарь . Представим, что у нас есть база данных известных спортсменов в виде множества списков, из которых мы должны сделать единый словарь. Посмотрим, как это можно реализовать. Введите в интерпретаторе данные этих или любых других атлетов с указанием их возраста и вида спорта:

>>> athletes = [['Bolshunov Aleksandr', 25, 'cross_country_skiing'], 
['Fourcade Martin', 33, 'biathlon'],
['Klaebo Johannes', 25, 'cross_country_skiing'],
['Boe Johannes', 29, 'biathlon']]

А объединить их в словарь можно с помощью следующего кода:

>>> athletes_dictionary = 
>>> print(athletes_dictionary)

Функция join()

Функция join() в Python помогает выполнять объединение элементов списка в строку :

>>> piece_of_poetry = ['Человек', 'собаке', 'друг:', 'это', 'знают', 'все', 'вокруг.']>>> piece_string = ' '.join(piece_of_poetry)
>>> print(piece_string)
Человек собаке друг: это знают все вокруг.

Чтобы строка получилась с отступами между элементами, мы в качестве имени разделителя добавили в код пробел: ' '.join . Есть и более длинный вариант добавления разделителя через переменную. Слегка изменим часть кода из примера выше:

>>> delimit = ' '
>>> piece_str = delimit.join(piece_of_poetry)
>>> print(piece_str)

Функция extend()

Еще одна простая функция, при помощи которой нетрудно объединить списки. Этот код тоже не требует пояснений:

>>> numbers1 = [38, 98, 17, 37, 12]>>> numbers2 = [34, 30, 78, 75, 11]>>> numbers1.extend(numbers2)
>>> print(numbers1)
[38, 98, 17, 37, 12, 34, 30, 78, 75, 11]

Функция map()

Польза этой функции в том, что она преобразует список, составленный из целых чисел, в строку. Причем map() хорошо работает вместе с уже известной нам join() , вот пример:

>>> integers = [38, 98, 17, 37, 12, 34, 30, 78, 75, 11]>>> maplist = map(str, integers)
>>> delimit = ', '
>>> result = delimit.join(maplist)
>>> print(result)
38, 98, 17, 37, 12, 34, 30, 78, 75, 11

Обратите внимание, что str — это обозначение объекта «строка», поэтому изменять его недопустимо (вы увидите здесь характерную подсветку синтаксиса Python). А вот integers , maplist , delimit и result изменяемые, поскольку это переменные. Мы снова выбрали «говорящие» названия, но вы можете назначить им любые другие, лишь бы они были корректными с точки зрения синтаксиса.

Метод itertools.chain()

itertools — вызываемая функция, поэтому для начала вызовем ее командой import :

>>> import itertools
>>> integers = [39, 97, 18, 36, 11, 35, 29, 77, 74, 10]>>> letters = ['g', 'w', 'm', 'a', 't', 'y', 'c', 'k', 'b', 'u']>>> result = list(itertools.chain(integers, letters))
>>> print(result)
[39, 97, 18, 36, 11, 35, 29, 77, 74, 10, 'g', 'w', 'm', 'a', 't', 'y', 'c', 'k', 'b', 'u']

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

Иногда нужно не просто объединить списки, но и выполнить их сортировку — чаще всего в алфавитном порядке. В этом нам поможет следующий код (вспомним метод конкатенации, который отлично подходит для числовых значений):

>>> integers1 = [38, 98, 17, 37, 12, 34, 30, 78, 75, 11]>>> integers2 = [39, 97, 18, 36, 11, 35, 29, 77, 74, 10]>>> integers3 = integers1 + integers2
>>> print(integers3)
[38, 98, 17, 37, 12, 34, 30, 78, 75, 11, 39, 97, 18, 36, 11, 35, 29, 77, 74, 10]>>> sorted(integers3)
[10, 11, 11, 12, 17, 18, 29, 30, 34, 35, 36, 37, 38, 39, 74, 75, 77, 78, 97, 98]

Простая функция sorted отсортирует новый список в порядке от меньшего к большему. Это же касается и буквенных значений (немного оптимизируем код и сразу сделаем вывод отсортированного списка, как обычно и требуется):

>>> letters1 = ['g', 'w', 'm', 'a', 't']>>> letters2 = ['y', 'c', 'k', 'b', 'u']>>> letters3 = letters1 + letters2
>>> sorted(letters3)
['a', 'b', 'c', 'g', 'k', 'm', 't', 'u', 'w', 'y']

Еще короче получается код с помощью моржового оператора:

>>> letters1 = ['g', 'w', 'm', 'a', 't']>>> letters2 = ['y', 'c', 'k', 'b', 'u']>>> sorted(letters3 := letters1 + letters2)
['a', 'b', 'c', 'g', 'k', 'm', 't', 'u', 'w', 'y']

И помните, что сортировать можно только объекты одного типа: например, при попытке сортировки числовых и буквенных значений интерпретатор Python выдаст ошибку.

Источник

Читайте также:  Set list value in javascript
Оцените статью