Введение в списки

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

Постановка задачи

Предположим нам нужно классифицировать виды цветков растений. Для достижения этой цели, мы организуем названия видов цветов в данных.

Один из способов сделать это — организовать имена в строку Python.

flowers = "розовая примула, орхидея с жесткими листьями, кентерберийские колокольчики, душистый горошек, бархатцы, тигровая лилия, лунная орхидея, райская птица, аконит, чертополох"

print(type(flowers)) #<class 'str'>
print(flowers) #розовая примула, орхидея с жесткими листьями, кентерберийские колокольчики, душистый горошек, бархатцы, тигровая лилия, лунная орхидея, райская птица, аконит, чертополох

Еще лучше представить те же данные в списке Python. Чтобы создать список, вам нужно использовать квадратные скобки ([, ]) и разделять каждый элемент запятой. Каждый элемент в списке является строкой Python, поэтому каждый заключен в кавычки.

flowers_list = ["розовая примула", "карманная орхидея с жесткими листьями", "колокольчики кентербери", "душистый горошек", "календула", "тигровая лилия", "лунная орхидея", "райская птица", "аконит", "чертополох"]

print(type(flowers_list)) #<class 'list'>
print(flowers_list) #['розовая примула', 'жестколистная карманная орхидея', 'колокольчики кентербери', 'душистый горошек', 'английские бархатцы', 'тигровая лилия', 'лунная орхидея', 'райская птица', 'аконит', 'чертополох']

На первый взгляд, данные не сильно отличается между собой, представляете ли вы информацию в строке Python или списке. Но, как вы увидите, есть много задач, которые вам будет проще выполнить с помощью списка. Например, список облегчит:

  • получить элемент в указанной позиции (первый, второй, третий и т. д.),
  • проверить количество элементов
  • добавить и удалить элементы.

Списки

Длинна

Мы можем подсчитать количество записей в любом списке с помощью len(), что является сокращением от "length". Вам нужно только указать имя списка в скобках.

# Список содержит десять записей.
print(len(flowers_list)) #10

Индексация

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

Обратите внимание, что Python использует индексирование с нулевой отметкой, что означает, что:

  • чтобы извлечь первую запись в списке, вы используете 0
  • чтобы извлечь вторую запись в списке, вы используете 1
  • чтобы извлечь последнюю запись в списке, вы используете на единицу меньше длины списка.
print("Первый элемент:", flowers_list[0]) #Первый элемент: розовая примула
print("Второй элемент:", flowers_list[1]) #Второй элемент: орхидея карманная с жесткими листьями

# Длина списка равна десяти, поэтому мы ссылаемся на последнюю запись с номером 9.
print("Последний элемент:", flowers_list[9]) #Последний элемент: чертополох
💡
Примечание: вы могли заметить, что в приведенной выше ячейке кода мы используем один print() для вывода нескольких элементов (как строки Python (например, «Первая запись:»), так и значения из списка (например, flowers_list[0]). Чтобы вывести несколько элементов в Python с помощью одной команды, нам нужно только разделить их запятой.

Срез (slice)

Вы также можете вытащить сегмент списка (например, первые три записи или последние две записи). Это называется срезом.

Например:

  • чтобы вытащить первые x записей, вы используете [:x]
  • чтобы вытащить последние y записей, вы используете [-y:]
print("Первые три записи:", flowers_list[:3]) #Первые три записи: ['розовая примула', 'жестколистная карманная орхидея', 'колокольчики кентербери']
print("Последние две записи:", flowers_list[-2:]) #Последние две записи: ['аконит', 'чертополох']

Как вы можете видеть выше, когда мы разрезаем список, возвращается новый, сокращенный список.

Удаление элементов

Удалите элемент из списка с помощью .remove() и заключите элемент, который хотите удалить, в скобки.

flowers_list.remove("чертополох")
print(flowers_list) #['розовая примула', 'карманная орхидея с жесткими листьями', 'колокольчики кентербери', 'душистый горошек', 'английские бархатцы', 'тигровая лилия', 'лунная орхидея', 'райская птица', 'аконит']

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

Добавьте элемент в список с помощью .append() и поместите элемент, который вы хотите добавить, в скобки.

flowers_list.append("львиный зев")
print(flowers_list) #['розовая примула', 'карманная орхидея с жесткими листьями', 'колокольчики кентербери', 'душистый горошек', 'календула', 'тигровая лилия', 'лунная орхидея', 'райская птица', 'аконит', 'львиный зев']

Списки предназначены не только для строк

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

В качестве примера рассмотрим продажи книг в твердом переплете в первую неделю апреля 2000 года в розничном магазине.

hardcover_sales = [139, 128, 172, 139, 191, 168, 170]

Здесь hardcover_sales — это список целых чисел. Подобно работе со строками, вы все еще можете делать такие вещи, как получение длины, извлечение отдельных записей и расширение списка.

print("Длина списка:", len(hardcover_sales)) #Длина списка: 7
print("Запись с индексом 2:", hardcover_sales[2]) #Запись c индексом 2: 172

Вы также можете получить минимум с помощью min() и максимум с помощью max().

print("Minimum:", min(hardcover_sales)) #Minimum: 128
print("Maximum:", max(hardcover_sales)) #Maximum: 191

Чтобы добавить все элементы в список, используйте функцию sum().

print("Всего продано книг за одну неделю:", sum(hardcover_sales))
#Всего продано книг за одну неделю: 1107

Мы также можем сделать аналогичные вычисления с фрагментами списка. В следующей ячейке кода мы берем сумму за первые пять дней (sum(hardcover_sales[:5])), а затем делим на пять, чтобы получить среднее количество проданных книг за первые пять дней.

print("Среднее количество проданных книг за первые пять дней:", sum(hardcover_sales[:5])/5)

Среднее количество проданных книг за первые пять дней: 153,8