Python append: как использовать его с несколькими типами данных

Как добавить элемент в конец списка Python? Для этого и предназначен метод append в Python, и append предназначен не только для списков.

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

Давайте рассмотрим несколько примеров!

Как добавить данные в список в Python?

Мы определим список Python, а затем вызовем метод добавления для этого списка.

В этом примере мы добавляем одно целое число в конец нашего списка, поэтому мы передаем целое число методу добавления.

>>> numbers = [1, -3, 5, 8]
>>> numbers.append(10)
>>> print(numbers)
[1, -3, 5, 8, 10] 

Как вы видите, список чисел обновился, и последним элементом списка теперь является целое число, которое мы только что добавили.

В вашем списке также могут быть смешанные типы данных:

>>> elements = [1, 'cat', 3+2j, 5.14, 'python']
>>> elements.append('tutorial')
>>> print(elements)
[1, 'cat', (3+2j), 5.14, 'python', 'tutorial'] 

Обратите внимание также, что метод append обновляет существующий список и не возвращает никакого значения.

>>> result = elements.append('tutorial')
>>> print(elements)
[1, 'cat', (3+2j), 5.14, 'python', 'tutorial', 'tutorial']
>>> print(result)
None 

Что, если мы хотим добавить два элемента в список?

Давайте попробуем добавить…

>>> numbers = [1, -3, 5, 8]
>>> numbers.append(10, 11)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)

Согласно ошибке, метод append() принимает только один аргумент.

А что, если мы добавим один список, содержащий два числа?

>>> numbers = [1, -3, 5, 8]
>>> numbers.append([10, 11])
>>> print(numbers)
[1, -3, 5, 8, [10, 11]] 

Это работает, но это не совсем то, что нам нужно, поскольку теперь последний элемент нашего списка — это другой список.

Далее в этом уроке мы увидим, как добавить два элемента в список, не вызывая метод добавления дважды.

Добавить символ к строке

Интересно, можно ли использовать метод append для добавления символа в конец строки.

В конце концов, строка — это всего лишь «список» символов…

>>> animal = 'tiger'
>>> animal.append('s')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'append'

Хм… судя по всему, метод append не поддерживается строковыми объектами.

Также помните, что…

Строковый тип данных в Python является неизменяемым.

Это означает, что для получения новой нужной нам строки нам необходимо объединить нашу текущую строку с символом «s» и присвоить результат новой строке:

>>> animal = 'tiger'
>>> new_animal = animal + 's'
>>> print(new_animal)
tigers

Добавить элемент в словарь Python

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

>>> capitals = {'Italy': 'Rome', 'United Kingdom': 'London'}
>>> capitals['Spain'] = 'Madrid'
>>> print(capitals)
{'Italy': 'Rome', 'United Kingdom': 'London', 'Spain': 'Madrid'}

Обновленный словарь можно увидеть после установки значения, связанного с ключом «Испания».

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

Например:

>>> monuments = {'London': [], 'Paris': []}
>>> monuments['London'].append('London Eye')
>>> print(monuments)
{'London': ['London Eye'], 'Paris': []}

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

Это означает, что мы можем использовать метод append для добавления элементов в каждый список таким же образом, как мы это сделали со значением, связанным с ключом «Лондон».

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

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

Итак, как мы можем добавить два отдельных элемента в конец списка?

Мы можем использовать метод extend:

>>> numbers = [1, -3, 5, 8]
>>> numbers.extend([10, 11])
>>> print(numbers)
[1, -3, 5, 8, 10, 11] 

Даже если мы передали методу extend список из двух элементов, результатом будет список, в котором эти два элемента были добавлены по отдельности в конец списка.

Именно то, что мы хотели!

Добавить элементы в кортеж

Давайте выясним, можно ли использовать метод добавления к кортежу:

>>> numbers = (1.34, 4.56, -4.56)
>>> numbers.append(5.67)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'

У кортежа нет метода добавления, поскольку кортежи неизменяемы.

Мы можем сгенерировать новый кортеж из исходного, сначала преобразовав кортеж в список.

Затем, добавив к списку новое число, мы можем преобразовать его в кортеж с помощью функции tuple().

>>> numbers = (1.34, 4.56, -4.56)
>>> numbers_list = list(numbers)
>>> numbers_list.append(5.67)
>>> numbers = tuple(numbers_list)
>>> print(numbers)
(1.34, 4.56, -4.56, 5.67) 

Добавить элементы в набор

Теперь пришло время добавить новый элемент в набор Python.

Знаете ли вы, доступен ли метод добавления для множеств?

Давайте выясним…

>>> numbers = {1.34, 4.56, -4.56}
>>> numbers.append(5.67)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'set' object has no attribute 'append' 

Нам сегодня не очень повезло… 🙂

Метод добавления не существует для набора.

Но какие еще методы поддерживает набор?

Мы можем это выяснить, написав имя нашего набора в оболочке Python, поставив после него точку и дважды нажав клавишу TAB.

Все поддерживаемые методы появятся в оболочке:

>>> numbers.
numbers.add(                         numbers.intersection(                numbers.remove(
numbers.clear(                       numbers.intersection_update(         numbers.symmetric_difference(
numbers.copy(                        numbers.isdisjoint(                  numbers.symmetric_difference_update(
numbers.difference(                  numbers.issubset(                    numbers.union(
numbers.difference_update(           numbers.issuperset(                  numbers.update(
numbers.discard(                     numbers.pop(                          

Просматривая список методов, я заметил метод add. Давайте попробуем!

>>> numbers.add(5.67)
>>> print(numbers)
{1.34, -4.56, 4.56, 5.67}

Полезно знать…

Чтобы добавить элемент в набор, можно использовать метод add.

Как вы можете видеть ниже, метод add поддерживает только одно значение за раз:

>>> numbers.add(10.23,22.23)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: add() takes exactly one argument (2 given)

И он не принимает списки в качестве параметров:

>>> numbers.add([10.23,22.23])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

Добавить список к другому списку

Это то, что мы уже видели в одном из предыдущих разделов:

>>> numbers = [1, -3, 5, 8]
>>> numbers.append([10, 11, 12, 15])
>>> print(numbers)
[1, -3, 5, 8, [10, 11, 12, 15]]

Используя функцию добавления, мы добавили еще один список в качестве последнего элемента нашего списка.

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

>>> print(numbers[4][0])
10

Имеет ли это смысл?

Что является противоположностью Append в Python?

Также может быть полезно знать, как удалить элемент из конца списка.

Давайте создадим список, а затем посмотрим методы, доступные для списков в Python:

>>> numbers = [0, 4, -4, 8]
>>> numbers.
numbers.append(  numbers.copy(    numbers.extend(  numbers.insert(  numbers.remove(  numbers.sort(
numbers.clear(   numbers.count(   numbers.index(   numbers.pop(     numbers.reverse(  

Первый метод, который может нам помочь, — это remove:

Удалить метод для списка в Python

Метод remove удаляет элементы из списка на основе их значения. Определенно не то, что мы ищем…

А как насчет метода pop?

Метод Pop для списка в Python

Это то, что мы искали. Это удаляет элемент с определенным индексом, а по умолчанию последний.

>>> numbers = [0, 4, -4, 8]
>>> numbers.append(10)
>>> numbers.pop()
10
>>> print(numbers)
[0, 4, -4, 8] 

Вы можете видеть, что мы добавили число 10 в конец нашего списка с помощью метода append. Затем мы удалили то же число с помощью метода pop.

Добавление строк в Pandas Dataframe

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

Давайте выясним, как можно добавлять строки в Dataframe, созданный с помощью библиотеки Pandas.

Сначала мы определим пустой фрейм данных:

>>> import pandas as pd
>>> df = pd.DataFrame()
>>> print(df)
Empty DataFrame
Columns: []
Index: [] 

Затем с помощью метода add Dataframe мы добавим две строки в Dataframe.

>>> df = df.append({'Cities': 'London'}, ignore_index=True)
>>> df = df.append({'Cities': 'Paris'}, ignore_index=True)
>>> print(df)
   Cities
0  London
1   Paris 

Мы также можем добавить один фрейм данных к другому фрейму данных.

Вот как это сделать:

>>> df1 = pd.DataFrame({"Cities": ["London"]})
>>> print(df1)
   Cities
0  London
>>> df2 = pd.DataFrame({"Cities": ["Paris"]})
>>> print(df2)
  Cities
0  Paris
>>> df3 = df1.append(df2)
>>> print(df3)
   Cities
0  London
0   Paris 

Кадр данных df3 является результатом добавления df2 к df1.

Я также создал руководство, которое вы можете использовать для практики работы с фреймами данных Pandas.

Добавить строку в файл

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

На этот раз мы будем работать с файлами и рассмотрим, как добавить строку в файл в Python.

Я создал файл со следующим содержимым:

$ cat testfile 
line1
line2
line3 

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

>>> testfile = open('testfile', 'a')      
>>> testfile.write('line4')
5
>>> testfile.close() 

Чтобы убедиться, что файл обновлен, мы можем открыть файл в режиме чтения и использовать функцию read():

>>> testfile = open('testfile', 'r')
>>> print(testfile.read())
line1
line2
line3
line4
>>> testfile.close() 

Новая строка добавлена ​​в файл.

Как вы видите, после работы с нашим файлом мы вызвали функцию close(), чтобы убедиться, что мы не расходуем ресурсы нашей системы.

Заключение

Мы увидели множество способов добавления данных в различные структуры данных Python.

Какой из них вы планируете использовать в своей программе?

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

Автор

Фото аватара

Владимир Михайлов

Программист на Python с большим количеством опыта и разнообразных проектов.