Как добавить элемент в конец списка 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
:
Метод remove
удаляет элементы из списка на основе их значения. Определенно не то, что мы ищем…
А как насчет метода pop
?
Это то, что мы искали. Это удаляет элемент с определенным индексом, а по умолчанию последний.
>>> 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.