Используйте списки Python как профессионал
В этой статье я попытаюсь объяснить списки Python, а также объясню, почему и когда их использовать, а также дам вам несколько советов о правильном использовании методов списков.
Давайте подробно разберемся со структурой данных list Python с пошаговыми пояснениями и примерами.
Что такое списки в Python?
Списки - одна из наиболее часто используемых встроенных структур данных в Python. Вы можете создать список, поместив все элементы в квадратные скобки [], разделенные запятыми. Списки могут содержать объекты любого типа, что делает их очень полезными и универсальными.
Основные характеристики списков Python следующие: Это изменяемые, упорядоченные, динамические и тип (последовательность) структуры данных.
Давайте рассмотрим каждую из этих характеристик более подробно;
- Новые элементы могут быть добавлены или удалены во время выполнения. Списки не являются объектами фиксированного размера, поэтому они называются динамическими структурами данных.
- Порядок, в котором вы указываете элементы при определении списка, сохраняется, поэтому списки становятся упорядоченными.
- Списки могут быть изменены после того, как они созданы. Вы можете добавлять, удалять элементы или изменять значение доступных элементов в объекте списка. Вам не нужно иметь еще одну копию объекта списка для его редактирования. Поэтому они называются изменяемыми объектами.
- Хотя списки Python не имеют фиксированного размера и ограничений, как массивы в C ++ или Java, они по-прежнему представляют собой структуры данных типа массивов, в которых содержащиеся элементы хранятся в памяти последовательно и доступны для порядковый номер, представляющий блок памяти для определенного элемента.
- Объект списка может содержать повторяющиеся элементы.
Когда использовать списки?
Давайте разберемся, когда использовать списки вместо другой структуры данных.
- Когда мы хотим хранить коллекцию разнородных объектов в единой структуре данных. Мы можем хранить любую из примитивных структур данных (целые числа, строки и т. Д.), А также составные структуры данных (списки, наборы, кортежи, словари и т. Д.) Внутри одного объекта списка.
- Когда мы хотим сохранить порядок данных неизменным. Порядок, в котором мы помещаем элементы в списки, сохраняется, мы можем получить доступ к элементам в том же порядке, в котором мы их помещаем.
- Поскольку списки изменяемы, не рекомендуется использовать их для хранения данных, которые вообще не следует изменять.
Как создать список?
Есть много способов создания и инициализации списков. Вы можете использовать квадратные скобки [] или список (повторяемый) конструктор, как показано ниже;
# empty list with square brackets empty_list = [] # empty list with square brackets empty_list = list() # list of integers integer_list = [1, 2, 3] # list with mixed data types mixed_list = [8, "Hi", 3.3] # list from an iterable object iterable_list = list("data-science") # a nested list nested_list = ["cat", [3, 2], ['d']]
Функции и методы последовательности Python
Списки поддерживают операции последовательности, такие как Индексирование, Нарезка, Членство, Конкатенация, Длина, Итерация и некоторые другие , поскольку они являются объектами типа последовательности.
Индексирование: элементы в списке можно получить с помощью index с помощью оператора индексирования. Индексация Python начинается с нуля. Вы можете использовать отрицательное целое число в качестве индекса, чтобы начать с конца. Если вы используете целое число, превышающее длину списка, вы получите IndexError. Если ваш индекс не является целым, вы получите TypeError.
# list of integers integer_list = [1, 2, 3, 4, 5, 6, 7] # indexing print(integer_list[0]) #prints '1' print(integer_list[6]) #prints '7' print(integer_list[-1]) #prints '7' print(integer_list[-7]) #prints '1' print(integer_list['a']) #TypeError: list indices must be integers print(integer_list[7]) #IndexError: index is out of range
Нарезка. Нарезка - очень мощный инструмент, поскольку он помогает вам создать другой список с диапазоном объектов, содержащихся в исходном списке. Нарезка сначала кажется не интуитивно понятным, но как только вы усвоите основы, вы сможете легко использовать их для улучшения операций со списками.
# list of integers integer_list = [1, 2, 3, 4, 5, 6, 7] # slicing with [start:end] takes all elements between 'start' to 'end' does not include 'end' element print(integer_list[1:3]) # prints '[2, 3]' # slicing with [start:] includes all elements after 'start' including the 'start'th element print(integer_list[2:]) # prints [3, 4, 5, 6, 7] # slicing with [:ends] includes all elements before 'end' and does not include the 'end'th element print(integer_list[:5]) # prints [1, 2, 3, 4, 5] # slicing with negative integers to start indexing from end print(integer_list[-2:]) # prints [6, 7] print(integer_list[:-5]) # prints [1, 2]
Членство: вы можете проверить, является ли конкретный объект членом списка или нет. Для этого вы можете использовать операторы членства ‘in’ или ‘not in’.
# list of integers integer_list = [1, 2, 3, 4, 5, 6, 7] # membership 4 in integer_list # True 8 in integer_list # False 4 not in integer_list # False 8 not in integer_list # True
Объединение. Вы можете использовать операторы «+» или «*» для объединения списков.
# list of integers integer_list = [1, 2, 3] # list of strings string_list = ['data', 'science', 'rocks'] integer_list + string_list #[1, 2, 3, 'data', 'science', 'rocks'] string_list * 2 #['data', 'science', 'rocks', 'data', 'science', 'rocks']
Длина: если вы передадите список в функцию «len ()», вы получите взамен длину списка.
# list of integers integer_list = [1, 2, 3, 4, 5, 6, 7] # len() with lists len(integer_list) # 7
Итерация: списки - это итерируемые объекты, поэтому вы можете выполнять итерацию по списку с помощью циклов for.
# list of integers integer_list = [1, 2, 3] # iterate over list elements for element in integer_list: print(element) # 1 2 3
Другие операции: есть некоторые дополнительные операции, которые применяются к большинству последовательностей, например max (), min (), count (), index (). Давайте посмотрим, как их можно использовать с объектами списка;
# list of integers integer_list = [1, 2, 3, 1, 8, 1] # max(), min() max(integer_list) # 8 min(integer_list) # 1 # count(), index() integer_list.index(3) # 2 integer_list.index(1) # 0 integer_list.count(1) # 3 integer_list.count(9) # 0
Список методов
Вот остальные методы, которые вы можете использовать со списками-объектами.
- append (element): добавляет один элемент в конец списка. Этот метод изменяет исходный список и не возвращает новый список;
# list of integers integer_list = [1, 2, 3] # append() integer_list.append(5) print(integer_list) # output # [1, 2, 3, 5]
- extend (other_list): добавляет элементы из other_list в конец исходного списка;
integer_list = [1, 2, 3] string_list = ['data', 'science'] # extend() integer_list.extend(string_list) #[1, 2, 3, 'data', 'science'] integer_list.extend('rocks') #[1, 2, 3, 'data', 'science', 'r', 'o', 'c', 'k', 's']
- insert (index, element): вставляет один элемент по указанному индексу и сдвигает элементы после него вправо.
string_list = ['data', 'science'] # insert() string_list.insert(1,'-') #['data', '-', 'science'] string_list.insert(3,'rocks') #['data', '-', 'science', 'rocks']
- sort (key = None, reverse = False) - сортирует данный список, не возвращает новый объект списка. Функция sort () сортирует список в порядке возрастания. Вы можете указать reverser = True, если вам нужно отсортировать список в порядке убывания. Вы также можете определить собственный порядок сортировки, создав функцию для определения того, какой элемент элементов списка будет использоваться в качестве ключа для упорядочивания. Как вы можете видеть в приведенном ниже примере, функция second_char (string_element) возвращает второй символ каждого строкового элемента в исходном списке. Затем список отсортирован на основе возвращаемого значения функции second_char.
integer_list = [1, 2, 3, 1, 8, 1] # sort() integer_list.sort() print(integer_list) integer_list.sort(reverse=True) print(integer_list) # custom sort string_list = ['science', 'rocks', 'data'] def second_char(string_element): return string_element[1] string_list.sort(key=second_char, reverse=False) print(string_list)
- reverse () - наоборот: просто меняет порядок в списке. Эта функция не возвращает новый список.
- remove (element): находит первый экземпляр данного элемента и удаляет его. Выбрасывает ValueError, если данный элемент отсутствует.
integer_list = [1, 2, 3, 1, 8, 1] # remove() integer_list.remove(1) print(integer_list) #[2, 3, 1, 8, 1] integer_list.remove(1) print(integer_list) #[2, 3, 8, 1] integer_list.remove(2) print(integer_list) #[3, 8, 1] integer_list.remove(9) #ValueError: list.remove(x): x not in list
- pop (index): удаляет и возвращает элемент по заданному индексу. Удаляет и возвращает последний элемент, если индекс не указан.
integer_list = [1, 2, 3, 4, 5, 6, 7] # pop() integer_list.pop(3)#returns 4 print(integer_list)#[1, 2, 3, 5, 6, 7] integer_list.pop() #returns 7 print(integer_list)#[1, 2, 3, 5, 6]
Составить список
Понимание списков обеспечивает элегантный и лаконичный способ создания списков. Синтаксис понимания списка;
new_list = [expression for member in iterable(if conditional)]
integer_list = [x for x in range(10) if x % 2 == 0 if x % 5 == 0]
print(integer_list) #[0, 10, 20, 30]
Заключение и основные выводы
Поскольку структуры данных являются фундаментальной частью наших программ, очень важно хорошо разбираться в списках Python для создания эффективных программ.
Я объяснил, почему и когда использовать списки, некоторые из основных выводов перечислены ниже;
- Основные характеристики списков Python следующие: Это изменяемые, упорядоченные, динамические и тип (последовательность) структуры данных.
- Мы можем использовать списки, когда хотим сохранить коллекцию разнородных объектов в единой структуре данных.
- Новые элементы могут быть добавлены или удалены во время выполнения. Списки не являются объектами фиксированного размера, поэтому они называются динамическими структурами данных.
- Порядок, в котором вы указываете элементы при определении списка, сохраняется, поэтому списки становятся упорядоченными.
Спасибо за чтение!