python extend что делает
Списковые методы append() и extend(): объяснение на примерах
При работе со списками часто приходится комбинировать данные нескольких списков. Как это делается в Python?
В этой статье мы рассмотрим различные способы комбинирования данных из разных списков. В частности, мы познакомимся с методами append() и extend() и разберем их работу на примерах.
Как в Python используется оператор +
Если вы внимательно прочтете приведенный выше код, вы заметите следующие вещи:
Использование метода append() в Python
Возьмем наш пример из предыдущего раздела, но теперь попробуем изменить первый список, добавив в него элементы второго.
Мы видим, что list_2 добавился в конец list_1 как отдельный элемент.
Таким образом, длина list_1 в результате операции append() увеличилась на единицу.
Но что, если мы хотим добавить в list_1 не список list_2 целиком, как отдельный элемент, а все элементы этого списка? Мы рассмотрим, как это делается, в следующем разделе.
Использование метода extend() в Python
Итак, мы добавили все элементы второго списка в первый — как и хотели.
Есть ли здесь какие-то подводные камни?
Допустим, мы хотим добавить к первому списку не целый список (или любой другой итерируемый объект), а какой-то один элемент. Давайте используем метод append() и добавим к списку list_1 булево значение True.
Метод extend() принимает в качестве аргумента только итерируемые объекты. «Под капотом» extend() перебирает в цикле итерируемый объект и добавляет каждый его элемент к первому списку.
Итерируемый объект — это любой объект, который вы можете перебрать в цикле и получить доступ к каждому отдельному элементу этого объекта. Для использования с extend() годятся списки, множества, кортежи и строки.
Использование методов extend() и append() со строками
Что касается временной сложности этих методов, мы интуитивно догадываемся, что append() имеет постоянное время выполнения, а время выполнения extend() пропорционально зависит от длины итерируемого объекта, который передается в качестве аргумента.
Итоги
Надеемся, эта статья помогла вам разобраться, как использовать методы append() и extend() в коде на Python.
Списки python — функции и методы Python list()
Как создать список?
Доступ к элементам списка
Каждый элемент имеет присвоенный ему индекс. Важно отметить, в python индекс первого элемента в списке — 0.
Также поддерживается отрицательная индексация. Отрицательная индексация начинается с конца. Иногда её удобнее использовать для получения последнего элемента в списке, потому что не нужно знать длину списка, чтобы получить доступ к последнему элементу.
Срезы(slice) списка
Срезы хороши для получения подмножества значений с вашего списка. На примере кода, приведенного ниже, он вернет список с элементами из индекса 0 и не включая индекс 2.
Код, указанный ниже возвращает список с элементами начиная с индекса 1 до конца.
Изменение элементов в списке
Списки в Python изменяемы. Это означает, что после создания списка можно обновить его отдельные элементы.
Методы и функции списков python
У списков Python есть разные методы, которые помогают в программировании. В этом разделе рассматриваются все методы списков.
Метод Index
Вы также можете указать, откуда начинаете поиск.
Метод Count
Метод count работает так, как звучит. Он считает количество раз, когда значение появляется в списке.
Метод Sort
Метод sort сортирует и меняет исходный список.
Вышеуказанный код сортирует список чисел от наименьшего к наибольшему. Код, указанный ниже, показывает, как вы можете сортировать список от наибольшего к наименьшему.
Следует отметить, что вы также можете отсортировать список строк от А до Я (или A-Z) и наоборот.
Метод Append
Метод append добавляет элемент в конец списка. Это происходит на месте.
Метод Remove
Код удаляет первое вхождение значения 2 из списка z.
Метод Pop
Метод pop удаляет элемент в указанном индексе. Этот метод также вернет элемент, который был удален из списка. В случае, если вы не указали индекс, он по умолчанию удалит элемент по последнему индексу.
Метод Extend
Метод extend расширяет список, добавляя элементы. Преимущество над append в том, что вы можете добавлять списки.
Добавим [4, 5] в конец z :
Метод Insert
Метод insert вставляет элемент перед указанным индексом.
Простые операции над списками
Примеры использование функций со списками:
Операторы + и * для списков
+ объединяет два списка.
* копирует элементы в списке.
Оператор in и not in
Аналогично not in возвращает противоположный от оператора in результат.
Итерация по списку с использованием цикла for
Список — последовательность. Ниже способ, которые вы можете использовать для цикла, чтобы перебрать все элементы списка.
Преобразование списка в строку
Вот несколько полезных советов для преобразования списка в строку (или любого другого итерабельного, такого как tuple ).
Во-первых, если это список строк, вы можете просто использовать join() следующим образом.
Списки (list). Функции и методы списков
Сегодня я расскажу о таком типе данных, как списки, операциях над ними и методах, о генераторах списков и о применении списков.
Что такое списки?
Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:
Список можно создать и при помощи литерала:
Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.
Возможна и более сложная конструкция генератора списков:
Но в сложных случаях лучше пользоваться обычным циклом for для генерации списков.
Функции и методы списков
Создать создали, теперь нужно со списком что-то делать. Для списков доступны основные встроенные функции, а также методы списков.
Таблица «методы списков»
Метод | Что делает |
---|---|
list.append(x) | Добавляет элемент в конец списка |
list.extend(L) | Расширяет список list, добавляя в конец все элементы списка L |
list.insert(i, x) | Вставляет на i-ый элемент значение x |
list.remove(x) | Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует |
list.pop([i]) | Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент |
list.index(x, [start [, end]]) | Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end) |
list.count(x) | Возвращает количество элементов со значением x |
list.sort(python extend что делает) | Сортирует список на основе функции |
list.reverse() | Разворачивает список |
list.copy() | Поверхностная копия списка |
list.clear() | Очищает список |
Нужно отметить, что методы списков, в отличие от строковых методов, изменяют сам список, а потому результат выполнения не нужно записывать в эту переменную.
И, напоследок, примеры работы со списками:
Изредка, для увеличения производительности, списки заменяют гораздо менее гибкими массивами (хотя в таких случаях обычно используют сторонние библиотеки, например NumPy).
Список Python Extend () Метод
Как вы можете не один, кроме нескольких элементов в данный список? Используйте метод Extend () в Python. В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть необходимым методом наиболее фундаментального типа контейнера данных в языке программирования Python. Определение и использование Метод List.extend (ITER) Добавляет все элементы … Python List Extend () Метод Подробнее »
Как вы можете не один, кроме нескольких элементов в данный список? Используйте продлить () Метод в Python. В этом руководстве показано вам все, что вам нужно знать, чтобы помочь вам овладеть необходимым методом наиболее фундаментального типа контейнера данных в языке программирования Python.
Определение и использование
list.exdend (iTer) Метод добавляет все элементы в аргументе Iterable ИТЕР к существующему Список Отказ
Вот краткий пример:
В первой строке примера вы создаете список lst Отказ Вы тогда добавляете целые числа 4, 5, 6 до конца списка, используя продлить () метод. Результатом является список с шестью элементами [1, 2, 3, 4, 5, 6] Отказ
Синтаксис
Вы можете вызвать этот метод на каждом объекте списка в Python. Вот синтаксис:
Аргументы
считать | Все элементы Iterable будут добавлены в конец списка – в порядке их возникновения. |
видео
Код головоломки
Теперь вы знаете основы. Давайте углубим ваше понимание с коротким кодом головоломки – можешь решить это?
Вы можете проверить решение на Приложение Finxter Отказ (Я знаю, что это сложно!)
Примеры
Давайте погрузимся в несколько примеров:
Вы можете увидеть, что продлить () Способ обеспечивает все виды повторных документов: списков, множеств, кортежей и даже объекты диапазона. Но то, что он не позволяет, это целочисленный аргумент. Почему? Поскольку целочисленный аргумент не является нетефилизируемым – это не имеет смысла «итерации за все значения в целом».
Вот ваш бесплатный PDF чит-лист, показывающий вас все методы списка Python на одной простой странице. Нажмите на изображение, чтобы загрузить файл PDF с высоким разрешением, распечатать его и опубликовать его в свою офисную стену:
Python List Extend () в начале
Что, если вы хотите использовать метод Extend () в начале: вы хотите «добавить» ряд элементов непосредственно перед первым элементом списка.
Ну, вы должны работать над своей терминологией для начала. Но если вы настаиваете, вы можете использовать Вставить () Метод вместо этого.
Вставить (я, х) Способ вставляет элемент х На позиции Я в списке. Таким образом, вы можете вставить элемент в каждую позицию в списке – даже в первой позиции. Обратите внимание, что если вы введете элемент в первую позицию, каждый последующий элемент будет перемещен на одну позицию. Другими словами, элемент Я Перейдет в положение Я + 1 Отказ
Список Python Extend () VS +
Список оператор конкатенации +: Если вы используете оператор + на два целых числа, вы получите сумму этих целых чисел. Но если вы используете оператор + в двух списках, вы получите новый список, который является конкатенацией этих списков.
Проблема с оператором + для Concatenation в списке состоит в том, что он создает новый список для каждого операции конкатенации списка. Это может быть очень неэффективным, если вы используете оператор + несколько раз в цикле.
Как быстро используется оператор +? Вот общий сценарий, как люди используют его, чтобы добавить новые элементы в список в цикле. Это очень неэффективно:
Эксперименты проводились на моем ноутбуке с процессором INTEL (R) CORE (TM) I7-8565U 1,8 ГГц (с Turbo Boost до 4,6 ГГц) и 8 ГБ ОЗУ.
Я измерил The Start и Stop Timestams, чтобы рассчитать общее прошедшее время для добавления 100 000 элементов в список.
Результат показывает, что для выполнения этой операции требуется 14 секунд.
Это кажется медленно (это!). Итак, давайте расследовать некоторые другие методы объединения и их производительности:
Python List Extend () производительность
Вот аналогичный пример, который показывает, как вы можете использовать продлить () Способ для объединения двух списков L1 и L2 Отказ
Но это тоже быстро? Давайте проверим производительность!
Я выполнил аналогичный эксперимент, как и раньше для оператора Concatenation перечисления + Отказ
Я измерил The Start и Stop Timestams, чтобы рассчитать общее прошедшее время для добавления 100 000 элементов в список.
Результат показывает, что требуется незначительное время для запуска кода (0,0 секунд по сравнению с 0,006 секунды для работы Append () выше).
То продлевать() Метод является наиболее лаконичным и самым быстрым способом объединения списков.
Python List Append () VS Extend ()
Метод list.append (x) Добавляет элемент х до конца Список Отказ
Метод list.exdend (iTer) Добавляет все элементы в ИТЕР до конца Список Отказ
Разница между Приложение () и продлевать() Это то, что первое добавляет только один элемент, а последний добавляет коллекцию элементов в список.
Вы можете увидеть это в следующем примере:
В коде вы впервые добавляете целочисленные элементы 1 и 2 в список, используя два вызова к Добавить () метод. Затем вы используете метод Extend для добавления трех элементов 3, 4 и 5 в одном вызове продлить () метод.
Какой метод будет быстрее – расширяет () vs plapend ()?
Чтобы ответить на этот вопрос, я написал короткий скрипт, который тестирует производительность выполнения создания крупных списков увеличения размеров с использованием продлить () и Добавить () методы.
Наш тезис в том, что продлить () Метод должен быть быстрее для более крупных размеров списка, потому что Python может добавить элементы в список в список, а не, вызова тот же метод снова и снова.
Я использовал свою ноутбук с процессором INTEL (R) CORE (TM) I7-8565U 1,8 ГГц (с Turbo Boost до 4,6 ГГц) и 8 ГБ ОЗУ.
Код состоит из трех частей высокого уровня:
Вот результирующий график, который сравнивает время выполнения двух методов PROPEND () VS EXTEND (). На оси X вы можете увидеть размер списка от 0 до 1 000 000 элементов. На оси Y вы можете увидеть время выполнения в секундах, необходимых для выполнения соответствующих функций.
Полученный график показывает, что оба метода чрезвычайно быстры для нескольких десятков тысяч элементов. На самом деле, они настолько быстро, что Время () Функция модуль времени не может захватить прошедшее время.
Но, когда вы увеличиваете размер списков до сотен тысяч элементов, продлить () Метод начинает выиграть:
Для больших списков с одним миллионом элементов выполнение времени выполнения продлевать() Метод на 60% быстрее, чем время выполнения Приложение () метод.
Причина является уже упомянутой дозированием индивидуальных добавок.
Однако эффект воспроизводится только для очень больших списков. Для небольших списков вы можете выбрать любой метод. Ну, для ясности вашего кода, это все равно имеет смысл предпочтить продлить () над Добавить () Если вам нужно добавить кучу элементов, а не только один элемент.
Python Append список в другой список
К списку приложений lst_1 в другой список lst_2 Используйте lst_2.extend (lst_1) метод. Вот пример:
Python List Extend () не возвращает
Возвращаемое значение продлить () Метод это Нет Отказ Возвращаемое значение продлить () Метод не является списком с добавленными элементами. Предполагая, что это общий источник ошибок.
Вот такая ошибка, когда кодер ошибочно предположил это:
Это не имеет смысла назначать результат продлить () метод другой переменной – потому что это всегда Нет Отказ Вместо этого продлить () Метод изменяет объект списка без создания (и возврата) нового списка.
Вот правильная версия того же кода:
Теперь вы измените сам объект списка, позвонив продлить () Метод на нем. Вы прочь Нет Возвращаемое значение, потому что он не нужен.
Список Python Concatenation
Таким образом, у вас есть два или более списков, и вы хотите приклеить их вместе. Это называется Список конкатенации Отказ Как вы можете это сделать?
Это шесть способов объединения списков (здесь подробный учебник):
Какой лучший способ объединить два списка?
Если вы заняты, вы можете узнать лучший ответ немедленно. Вот:
Тем не менее, вам следует избегать использования метода Append () для конкатенации списка, потому что он не очень эффективен, ни краткий и читаемый.
Список Python Extend () Уникальный – Добавить, если не существует
Общий вопрос заключается в следующем:
Как вы можете добавить или добавлять элементы в список, но только если они еще не существуют в списке?
Если игнорируя любые проблемы с производительностью, ответ прост: используйте состояние, если в сочетании с операцией членства Элемент в списке и только Добавить () Элемент Если результат это Ложь (Не используйте Расширение () для этого мелкозернистого метода). В качестве альтернативы вы также можете использовать операцию отрицательной членства Элемент не в списке и добавить элемент, если результат – Правда Отказ
Пример : Скажем, вы хотите добавить все элементы от 0 до 9 в список трех элементов. Но вы не хотите дубликаты. Вот как вы можете сделать это:
Вы добавляете все элементы от 0 до 9 в список, но только если они еще не присутствуют. Таким образом, полученный список не содержит дубликатов.
Но есть проблема: этот метод очень неэффективен!
В каждой итерации петли фрагмент Элемент не в LST Ищется весь список для текущего элемент Отказ Для списка с N Элементы, это результаты в N Сравнение, на итерацию. Как у вас есть N Итерации, сложность выполнения данного фрагмента кода является квадратичным в количестве элементов.
Вы можете сделать лучше?
Конечно, но вам нужно смотреть за пределы типа данных списка: Наборы Python здесь правильная абстракция. Если вам нужно обновить ваше основное понимание заданного типа данных, ознакомьтесь с моим подробным учебным пособием (с примерами Harry Potter) в блоге Finxter.
Почему Python отлично подходит для этого? Потому что они не позволяют никаких дубликатов на дизайн: Набор – это Уникальный Коллекция неупорядоченных элементов Отказ И Сложность времени выполнения Операции членства не является линейным в количестве элементов (как это дело для списков), но постоянные!
Пример : Скажем, вы хотите добавить все элементы от 0 до 9 до набора трех элементов. Но вы не хотите дубликаты. Вот как вы можете сделать это с наборами:
Набор не позволяет дублировать записи, чтобы элементы 1, 2 и 3 не добавляются дважды на множество.
Вы даже можете сделать этот код более лаконичным:
Метод Union создает новый набор, который состоит из всех элементов в обеих операндах.
Теперь вы можете захотеть иметь список в результате, а не набор. Решение простое: преобразуйте результирующий набор в список, используя Список (набор) Метод преобразования. Это имеет линейную сложность выполнения, и если вы называете его только один раз, он не изменяет общую сложность выполнения кодового фрагмента (он остается линейным в количестве заданных элементов).
Проблема: Что, если вы хотите сохранить информацию о заказе и до сих пор добавлять все элементы, которые еще не в списке?
Проблема с предыдущим подходом заключается в том, что путем преобразования списка на набор порядок списка теряется. В этом случае я советую вам сделать следующее: используйте две структуры данных, список и набор. Вы используете список, чтобы добавить новые элементы и сохранить информацию о заказе. Вы используете SET для проверки членства (постоянные, а не линейные сложности выполнения). Вот код:
Вы можете видеть, что результирующий список не содержит никаких дубликатов, но информация о заказе сохраняется. В то же время сложность выполнения кода является линейной, поскольку каждая итерация петли может быть завершена в постоянное время.
Компромисс в том, что вы должны поддерживать две структуры данных, которые приводит к двойниковым накладным расходам памяти. Это красиво демонстрирует общую обратную связь между памятью и временным расходом времени.
Список Python Extend () Вернуть новый список
Если вы используете lst.extend (ИТЕР) Операция, вы добавляете элементы в ИТЕР в существующий список lst Отказ Но что, если вы хотите создать новый список, где были добавлены все элементы?
Ответ просто использовать Список конкатенации Операция lst + список (iTer) который создает новый список каждый раз, когда он используется. Оригинальный список lst не будет затронута операцией конкатенации списка.
Вот пример, который показывает, что продлить () Способ изменяет только существующий список:
И вот пример, который показывает, как создать новый список, когда вы добавляете элементы 42 и 99 в список:
Используя операцию конкатенации списка, вы можете создать новый список, а не добавлять элемент в существующий список.
Список Python расширяет () Сложность времени, память и эффективность
Сложность времени: продлить () Метод имеет линейный Сложность времени O (n) В количестве элементов N быть добавленным в список. Добавление одного элемента в список требуется только постоянное количество операций – независимо от размера списка.
Космическая сложность: продлить () Метод имеет линейную космическую сложность O (n) В количестве элементов N быть добавленным в список. Сама операция нуждается только в постоянном количестве байтов для вовлеченных временных переменных. Настройка памяти не зависит от размера списка.
Если вы заинтересованы в самых исполнительных способах добавления нескольких элементов в список, вы можете увидеть обширные тесты производительности в этом руководстве в блоге Finxter.
Python List Extend () при индексе
Если вы хотите вставить весь список в определенную позицию и создать новый список, если это рекомендую использовать нарезку Python. Ознакомьтесь с этим углубленным руководством блога, который покажет вам все, что вам нужно знать о нарезке.
Вот код, который показывает, как создать новый список после вставки списка в определенном положении:
Опять же, вы используете Список конкатенации Чтобы создать новый список с элементом 99, вставленных в положение 2. Обратите внимание, что операции нарезки lst [: 2] и lst [2:] Создайте свою собственную неглубокую копию списка.
Python List Extend () Безопасность потока
У вас есть несколько потоков, которые одновременно получают доступ к вашему списку? Затем вы должны быть уверены, что перечисленные операции (такие как Extend () ) на самом деле резьба безопасна Отказ
Другими словами: вы можете позвонить в продлить () Операция в двух потоках в том же списке одновременно? (И вы можете быть уверены, что результат является значимым?)
Единственное, что вам нужно знать, состоит в том, что каждая основная операция в реализации CPYPHON является атомный Отказ Он выполнен полностью и сразу, прежде чем любой другой поток имеет возможность запустить на одном виртуальном двигателе. Поэтому нет условий расы. Примером для такого состояния гонки будет следующее: Первый поток считывает значение из списка, вторые потоки перезаписывают значение, и первая тема перезаписывает значение снова недействительным в операции второго потока.
Все операции Cpython являются потоковыми безопасными. Но если вы объединяете эти операции на функции более высокого уровня, это не в целом без резьбы, поскольку они состоят из многих (возможно, чередующихся) операций.
Куда пойти отсюда?
list.exdend (iTer) Метод добавляет все элементы в ИТЕР до конца Список (в порядке их появления).
Вы узнали INS и ауты этого важного способа списка Python.
Если вы продолжаете бороться с теми основными командами Python, и вы чувствуете застрявшие в своем прогрессе обучения, у меня есть что-то для вас: Python One-listers (Amazon Link).
В книге я дам вам тщательный обзор темы критических компьютерных наук, таких как машинное обучение, регулярное выражение, наука о данных, Numpy и Python Basics – все в одной линейке кода Python!
Получите книгу от Amazon!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.