Сообщить об ошибке.

Метод list.extend() в Python, расширяет список другой последовательностью

Добавляет нескольких значений в конец списка

Синтаксис:

sequence.extend(iterable) 
# или
sequence += iterable
# или
sequence + iterable

Параметры:

Результат:

  • в конец последовательности sequence добавляются элементы iterable.

Описание:

Операция позволяет расширить список содержимым любой последовательности, которая поддерживает итерацию. Метод sequence.extend(iterable) производит расширение последовательности sequence содержимым итерации iterable.

Если объект iterable не является итерацией поднимается исключение TypeError.

По большей части то же самое, что и sequence[len(sequence):len(sequence)] = iterable. Эта операция поддерживаются изменяемыми типами последовательностей.

Примеры раcширения/изменения списка другим списком.

Примеры добавления нескольких значений в конец списка.

>>> x = [12, 15, 18]
>>> x.extend([3, 6, 9])
>>> x
# [12, 15, 18, 3, 6, 9]

>>> x.extend('one')
>>> x
# [12, 15, 18, 3, 6, 9, 'o', 'n', 'e']

>>> x.extend(20)
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: 'int' object is not iterable

>>> x.extend([20])
>>> x
# [12, 15, 18, 3, 6, 9, 'o', 'n', 'e', 20]

# Альтернативная операция
>>> x = ['one','two','three']
# строка представляет из себя кортеж
>>> x += 'abc'
>>> x 
# ['one','two','three', 'a', 'b', 'c']

# добавление одного элемента 
# альтернатива операции x.append(1.3)
>>> x += [1.3]
>>> x
# ['one','two','three', 'a', 'b', 'c', 1.3]

# Добавление/расширение при помощи среза
>>> x = ['a', 'b', 'c']
>>> x[3:3] = [12, 15, 18]
>>> x
# ['a', 'b', 'c', 12, 15, 18]

# Добавление/расширение списка сложением
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
# [1, 2, 3, 4, 5, 6]

Объединение нескольких списков разной длины без цикла.

Имеем список [[1, 2, 3], [10, 11], [4, 5, 6, 7], [8], [9]]. Задача, объединить списки разной длины без обхода элементов в цикле? Вот как это можно сделать при помощи встроенной функции sum():

>>> lst = [[1, 2, 3], [10, 11], [4, 5, 6, 7], [8], [9]]
>>> new_lst = sum(lst, [])
>>> new_lst
# [1, 2, 3, 10, 11, 4, 5, 6, 7, 8, 9]

Более эффективный способ (для объединения больших списков) это использование - это использование модуля itertools и его функции itertools.chain.from_iterable().

>>> import itertools
>>> lst = [[1, 2, 3], [10, 11], [4, 5, 6, 7], [8], [9]]
>>> new_iter = itertools.chain.from_iterable(lst)
>>> list(new_iter)
# [1, 2, 3, 10, 11, 4, 5, 6, 7, 8, 9]

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

Имеем такой список [1, [[2, 3]], [[10], 11], [[[4, 5], 6], 7], [[[]]], [9]]. Задача, раскрыть списки разной глубины и получить один линейный список.

Для глобального поглощения списков разной глубины вложенности создадим функцию list_merge() с аргументом по умолчанию res=[] и будем использовать рекурсивные вызовы.

Использование в качестве аргумента по умолчанию res=[] необходимо и обосновано сохранением состояния итогового линейного списка.

>>> def list_merge(lst, res=[]):
...   for el in lst:
...     list_merge(el) if isinstance(el, list) else res.append(el)
...   return res

>>> lst = [1, [[2, 3]], [[10], 11], [[[4, 5], 6], 7], [[[]]], [9]]
>>> new_lst = list_merge(lst)
>>> new_lst
# [1, 2, 3, 10, 11, 4, 5, 6, 7, 8, 9]