Учебники

Объектно-ориентированный Python — Структуры данных

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

Списки

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

Структура данных — список

>>>
>>> # Any Empty List
>>> empty_list = []
>>>
>>> # A list of String
>>> str_list = ['Life', 'Is', 'Beautiful']
>>> # A list of Integers
>>> int_list = [1, 4, 5, 9, 18]
>>>
>>> #Mixed items list
>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>> # To print the list
>>>
>>> print(empty_list)
[]
>>> print(str_list)
['Life', 'Is', 'Beautiful']
>>> print(type(str_list))
<class 'list'>
>>> print(int_list)
[1, 4, 5, 9, 18]
>>> print(mixed_list)
['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']

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

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

>>> mixed_list = ['This', 9, 'is', 18, 45.9, 'a', 54, 'mixed', 99, 'list']
>>>
>>> # To access the First Item of the list
>>> mixed_list[0]
'This'
>>> # To access the 4th item
>>> mixed_list[3]
18
>>> # To access the last item of the list
>>> mixed_list[-1]
'list'

Пустые объекты

Пустые объекты — самые простые и основные встроенные типы Python. Мы использовали их несколько раз, не замечая этого, и распространили его на каждый созданный нами класс. Основная цель написания пустого класса состоит в том, чтобы заблокировать что-то на некоторое время, а затем расширить и добавить к нему поведение.

Добавить поведение в класс означает заменить структуру данных объектом и изменить все ссылки на него. Поэтому важно проверить данные, является ли это скрытым объектом, прежде чем что-либо создавать. Обратите внимание на следующий код для лучшего понимания:

>>> #Empty objects
>>>
>>> obj = object()
>>> obj.x = 9
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
obj.x = 9
AttributeError: 'object' object has no attribute 'x'

Итак, сверху видно, что невозможно установить какие-либо атрибуты для объекта, который был создан непосредственно. Когда Python позволяет объекту иметь произвольные атрибуты, ему требуется определенный объем системной памяти для отслеживания того, какие атрибуты имеет каждый объект, для хранения как имени атрибута, так и его значения. Даже если атрибуты не сохранены, определенное количество памяти выделяется для потенциальных новых атрибутов.

Поэтому Python по умолчанию отключает произвольные свойства объекта и несколько других встроенных модулей.

>>> # Empty Objects
>>>
>>> class EmpObject:
    pass
>>> obj = EmpObject()
>>> obj.x = 'Hello, World!'
>>> obj.x
'Hello, World!'

Следовательно, если мы хотим сгруппировать свойства вместе, мы могли бы сохранить их в пустом объекте, как показано в коде выше. Однако этот метод не всегда предлагается. Помните, что классы и объекты следует использовать только тогда, когда вы хотите указать как данные, так и поведение.

Кортеж

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

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

Поскольку кортеж может выступать в качестве ключа словаря, сохраненные значения отличаются друг от друга. Мы можем создать кортеж, разделив значения запятой. Кортежи заключены в скобки, но не обязательно. Следующий код показывает два идентичных назначения.

>>> stock1 = 'MSFT', 95.00, 97.45, 92.45
>>> stock2 = ('MSFT', 95.00, 97.45, 92.45)
>>> type (stock1)
<class 'tuple'>
>>> type(stock2)
<class 'tuple'>
>>> stock1 == stock2
True
>>>

Определение кортежа

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

Точно так же, как когда вы нарезаете список, вы получаете новый список, а когда вы нарезаете кортеж, вы получаете новый кортеж.

>>> tupl = ('Tuple','is', 'an','IMMUTABLE', 'list')
>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl[0]
'Tuple'
>>> tupl[-1]
'list'
>>> tupl[1:3]
('is', 'an')

Методы кортежа Python

Следующий код показывает методы в кортежах Python —

>>> tupl
('Tuple', 'is', 'an', 'IMMUTABLE', 'list')
>>> tupl.append('new')
Traceback (most recent call last):
   File "<pyshell#148>", line 1, in <module>
      tupl.append('new')
AttributeError: 'tuple' object has no attribute 'append'
>>> tupl.remove('is')
Traceback (most recent call last):
   File "<pyshell#149>", line 1, in <module>
      tupl.remove('is')
AttributeError: 'tuple' object has no attribute 'remove'
>>> tupl.index('list')
4
>>> tupl.index('new')
Traceback (most recent call last):
   File "<pyshell#151>", line 1, in <module>
      tupl.index('new')
ValueError: tuple.index(x): x not in tuple
>>> "is" in tupl
True
>>> tupl.count('is')
1

Из приведенного выше кода мы можем понять, что кортежи неизменны и, следовательно, —

  • Вы не можете добавлять элементы в кортеж.

  • Вы не можете добавлять или расширять метод.

  • Вы не можете удалить элементы из кортежа.

  • У кортежей нет метода удаления или удаления.

  • Count и index — методы, доступные в кортеже.

Вы не можете добавлять элементы в кортеж.

Вы не можете добавлять или расширять метод.

Вы не можете удалить элементы из кортежа.

У кортежей нет метода удаления или удаления.

Count и index — методы, доступные в кортеже.

толковый словарь

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

Определение словарей

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

>>> # empty dictionary
>>> my_dict = {}
>>>
>>> # dictionary with integer keys
>>> my_dict = { 1:'msft', 2: 'IT'}
>>>
>>> # dictionary with mixed keys
>>> my_dict = {'name': 'Aarav', 1: [ 2, 4, 10]}
>>>
>>> # using built-in function dict()
>>> my_dict = dict({1:'msft', 2:'IT'})
>>>
>>> # From sequence having each item as a pair
>>> my_dict = dict([(1,'msft'), (2,'IT')])
>>>
>>> # Accessing elements of a dictionary
>>> my_dict[1]
'msft'
>>> my_dict[2]
'IT'
>>> my_dict['IT']
Traceback (most recent call last):
   File "<pyshell#177>", line 1, in <module>
   my_dict['IT']
KeyError: 'IT'
>>>

Из приведенного выше кода мы можем наблюдать, что:

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

  • Число 1 — это ключ, а msft — его значение. Точно так же 2 — это ключ, а ИТ — его ценность.

  • Вы можете получить значения по ключу, но не наоборот. Таким образом, когда мы пробуем my_dict [‘IT’] , это вызывает исключение, потому что IT не является ключом.

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

Число 1 — это ключ, а msft — его значение. Точно так же 2 — это ключ, а ИТ — его ценность.

Вы можете получить значения по ключу, но не наоборот. Таким образом, когда мы пробуем my_dict [‘IT’] , это вызывает исключение, потому что IT не является ключом.

Модифицирующие словари

Обратите внимание на следующий код, чтобы понять о модификации словаря —

>>> # Modifying a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'IT'}
>>> my_dict[2] = 'Software'
>>> my_dict
{1: 'msft', 2: 'Software'}
>>>
>>> my_dict[3] = 'Microsoft Technologies'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}

Из приведенного выше кода мы можем наблюдать, что —

  • Вы не можете иметь дубликаты ключей в словаре. Изменение значения существующего ключа приведет к удалению старого значения.

  • Вы можете добавлять новые пары ключ-значение в любое время.

  • Словари не имеют понятия порядка среди элементов. Это простые неупорядоченные коллекции.

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

Вы можете добавлять новые пары ключ-значение в любое время.

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

Смешивание типов данных в словаре

Обратите внимание на следующий код, чтобы понять о смешивании типов данных в словаре —

>>> # Mixing Data Types in a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies'}
>>> my_dict[4] = 'Operating System'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>> my_dict['Bill Gates'] = 'Owner'
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}

Из приведенного выше кода мы можем наблюдать, что —

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

  • В отличие от значений словаря, ключи словаря более ограничены, но могут быть любого типа, например, строки, целые числа или любые другие.

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

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

Удаление элементов из словарей

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

>>> # Deleting Items from a Dictionary
>>>
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System',
'Bill Gates': 'Owner'}
>>>
>>> del my_dict['Bill Gates']
>>> my_dict
{1: 'msft', 2: 'Software', 3: 'Microsoft Technologies', 4: 'Operating System'}
>>>
>>> my_dict.clear()
>>> my_dict
{}

Из приведенного выше кода мы можем наблюдать, что —

  • del — позволяет удалять отдельные элементы из словаря по ключу.

  • очистить — удаляет все элементы из словаря.

del — позволяет удалять отдельные элементы из словаря по ключу.

очистить — удаляет все элементы из словаря.

наборы

Set () — неупорядоченная коллекция без повторяющихся элементов. Хотя отдельные элементы являются неизменяемыми, сам набор является изменяемым, то есть мы можем добавлять или удалять элементы / элементы из набора. Мы можем выполнять математические операции, такие как объединение, пересечение и т. Д. С множеством.

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

Создание набора

Набор создается путем помещения всех элементов (элементов) в фигурные скобки {} , разделенных запятой или с помощью встроенной функции set () . Соблюдайте следующие строки кода —

>>> #set of integers
>>> my_set = {1,2,4,8}
>>> print(my_set)
{8, 1, 2, 4}
>>>
>>> #set of mixed datatypes
>>> my_set = {1.0, "Hello World!", (2, 4, 6)}
>>> print(my_set)
{1.0, (2, 4, 6), 'Hello World!'}
>>>

Методы для множеств

Обратите внимание на следующий код, чтобы понять методы для множеств —

>>> >>> #METHODS FOR SETS
>>>
>>> #add(x) Method
>>> topics = {'Python', 'Java', 'C#'}
>>> topics.add('C++')
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>>
>>> #union(s) Method, returns a union of two set.
>>> topics
{'C#', 'C++', 'Java', 'Python'}
>>> team = {'Developer', 'Content Writer', 'Editor','Tester'}
>>> group = topics.union(team)
>>> group
{'Tester', 'C#', 'Python', 'Editor', 'Developer', 'C++', 'Java', 'Content
Writer'}
>>> # intersets(s) method, returns an intersection of two sets
>>> inters = topics.intersection(team)
>>> inters
set()
>>>
>>> # difference(s) Method, returns a set containing all the elements of
invoking set but not of the second set.
>>>
>>> safe = topics.difference(team)
>>> safe
{'Python', 'C++', 'Java', 'C#'}
>>>
>>> diff = topics.difference(group)
>>> diff
set()
>>> #clear() Method, Empties the whole set.
>>> group.clear()
>>> group
set()
>>>

Операторы для множеств

Обратите внимание на следующий код, чтобы понять об операторах для множеств —