Добавление и расширение в списках Python

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

Добавление элементов в список

Списки - одна из самых полезных структур данных, доступных в Python или любом другом языке программирования, поскольку они используются во многих различных алгоритмах и решениях.

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

Добавить

Этот метод добавляет элемент в конец существующего списка. Синтаксис для его использования:

 a.append(x) 

Здесь переменная a - это наш список, а x - это элемент, который нужно добавить. Это выражение эквивалентно a[len(a):] = [x] .

Например, вот как с его помощью поместить элемент «y» в конец нашего списка, a :

 a = [1, 'x', 2] 
 a.append('y') 
 
 print(a) 

Запуск этого кода приведет к следующему выводу:

 $ python append.py 
 [1, 'x', 2, 'y'] 

Вставлять

Этот метод вставляет элемент в указанную позицию в данном списке. Синтаксис:

 a.insert(i, x) 

Здесь аргумент i - это индекс элемента, перед которым нужно вставить элемент x . Таким образом, a.insert(len(a), x) - это то же самое, что a.append(x) . Однако сила этого метода заключается в его использовании для размещения элементов где-нибудь внутри списка, а не в конце. Если вам нужно только добавить элемент в конец списка, тогда append отлично подойдет для этого и работает быстрее (что имеет значение для больших списков).

Например:

 a = [1, 'x', 'y'] 
 a.insert(2, 2) 
 
 print(a) 

Этот код приведет к следующему выводу:

 $ python insert.py 
 [1, 'x', 2, 'y'] 

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

Продлевать

Этот метод добавляет элементы (обратите внимание на множественное число!) В список, добавляя все элементы итерации, которые вы ему передаете. Результирующий список содержит все элементы обоих списков.

Синтаксис использования этого метода:

 a.extend(x) 

В этом случае a - наш список, а x - повторяемый объект, например другой список. Этот метод эквивалентен a[len(a):] = x .

Например:

 a = [1, 'x', 'y'] 
 b = [1, 2] 
 a.extend(b) 
 
 print(a) 

Выполнение этого кода приводит к следующему выводу:

 $ python extend.py 
 [1, 'x', 'y', 1, 2] 

Обратите внимание, как два списка были объединены один за другим.

В Python вы также можете добиться тех же результатов, выполнив простое добавление. Таким образом, a + b в этом случае приведет к тому же массиву, что и наш сценарий выше. Это благодаря __add__() , но это выходит за рамки данной статьи.

Сравнение каждого метода

Чтобы увидеть разные результаты, полученные с помощью этих методов, давайте проведем прямое сравнение, запустив следующий код:

 a1 = [1, 'x', 'y'] 
 a2 = [1, 'x', 'y'] 
 a3 = [1, 'x', 'y'] 
 
 b = [2, 3] 
 
 a1.append(b) 
 a2.insert(3, b) 
 a3.extend(b) 
 
 print(a1) 
 print(a2) 
 print(a3) 

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

 $ python all.py 
 [1, 'x', 'y', [2, 3]] 
 [1, 'x', 'y', [2, 3]] 
 [1, 'x', 'y', 2, 3] 

Как мы видим, как append и insert добавляют список b к начальному списку, но как один элемент, который является списком. Другими словами, он не добавляет каждый элемент b отдельности, а вместо этого добавляет сам объект целиком.

С extend фактически добавляет отдельные элементы списка b как отдельные и уникальные элементы результирующего списка.

Все это согласуется с тем, что мы видели ранее, то есть append и insert добавляют только один элемент. Принимая во внимание, что extend расширяет исходный список, добавляя элементы второго списка в его конец.

Еще одно отличие, которое следует учитывать, - это показатель эффективности. Учитывая, как работает каждая операция, мы можем довольно легко определить временную сложность каждого метода. Или вы можете просто обмануть и проверить страницу сложности времени на вики-странице python.org.

Временные сложности следующие:

Методика Сложность времени


append() О (1) insert() На) extend() ОК)

Здесь «n» - это количество элементов, находящихся в данный момент в списке, а «k» - это количество элементов в объекте параметра.

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

  • Если мы хотим добавить элемент в конец списка, мы должны использовать append . Это быстрее и прямо.
  • Если мы хотим добавить элемент где-нибудь в списке, мы должны использовать insert . Это единственный вариант для этого.
  • Если мы хотим объединить элементы другой итерации в наш список, то мы должны использовать extend .

Заключение

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

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