Типы данных Python — от базового до углубленного обучения | Месяц тем Python

задняя часть Python
Типы данных Python — от базового до углубленного обучения | Месяц тем Python

Эта статья участвует в "Месяце тем Python", подробнее см.Ссылка на мероприятие

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

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

Все в Python, включая переменные, функции, модули, является объектом. Еще один забавный факт заключается в том, что переменные не имеют типов, это просто метки в Python. Это значение, связанное с типом. Таким образом, одна и та же переменная label может ссылаться на значения разных типов данных Python.

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

содержание

Типы данных Python от базового до расширенного

1.Booleans

Логические значения — это тип данных, встречающийся почти во всех языках программирования, в том числе и в Python. Boolean в Python может иметь два значения — True или False. Эти значения являются константами, которые можно использовать для присвоения или сравнения логических значений. Следуйте простому примеру, приведенному ниже.

condition = False
if condition == True:
    print("You can continue with the prpgram.")
else:
    print("The program will end here.")

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

condition = False
if condition:
    print("You can continue with the prpgram.")
else:
    print("The program will end here.")

Приведенный выше код выдаст тот же результат, что и предыдущий. Это потому, что заявление

if condition:

эквивалентно,

if condition == True:

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

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

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

>>> str = "Learn Python"

>>> len(str)
12

>>> len(str) == 12
True

>>> len(str) != 12
False

В некоторых случаях булевы константы «Истина» и «Ложь» также могут действовать как числа.

>>> A, B = True + 0, False + 0
>>> print(A, B)
1 0
>>> type(A), type(B)
(<class 'int'>, <class 'int'>)

Из приведенного выше примера очевидно, что True равно 1, а False равно 0. Они становятся числами в арифметических операциях.

вернуться к содержанию


🍰 2. Числа

Числа — один из самых известных типов данных Python. В отличие от многих языков, в которых есть только целые числа и числа с плавающей запятой, Python представляет комплексные числа как новый тип числа.

Вот несколько вещей для вас, чтобы подумать.

  • Числа в Python классифицируются с использованием следующих ключевых слов.

int, float и комплекс.

  • В Python есть встроенная функция type() для определения типа данных переменной или значения.
  • Другая встроенная функция isinstance() используется для проверки типа объекта.
  • В Python мы можем добавить «j» или «J» после числа, чтобы сделать его мнимым или сложным.

пример

num = 2
print("The number (", num, ") is of type", type(num))

num = 3.0
print("The number (", num, ") is of type", type(num))

num = 3+5j
print("The number ", num, " is of type", type(num))
print("The number ", num, " is complex number?", isinstance(3+5j, complex))
#Output
The number ( 2 ) is of type <class 'int'>
The number ( 3.0 ) is of type <class 'float'>
The number (3+5j) is of type <class 'complex'>
The number (3+5j) is complex number? True
  • Чтобы сформировать комплексное число, мы можем даже использовать тип в качестве конструктора. См. пример ниже.
>>> complex(1.2,5)
(1.2+5j)
  • Целые числа в Python не имеют ограничений по размеру, пока доступна необходимая память.
>>> NUM = 1234567890123456789 
>>> num.bit_length()
61 
>>> NUM 
1234567890123456789 
>>> NUM = 1234567890123456789123456789012345678912345678901234567891234567890123456789 
>>> num.bit_length()
250 
>>> NUM 
1234567890123456789123456789012345678912345678901234567891234567890123456789
  • Числа с плавающей запятой имеют точность до 15 знаков после запятой.
>>> import sys
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
>>> sys.float_info.dig
15

Примечание. dig в приведенном выше примере — это максимальное количество знаков после запятой в числе с плавающей запятой.

вернуться к содержанию


🍬 3. Струны

Последовательность из одного или нескольких символов, заключенная в одинарные ' или двойные кавычки ", рассматривается в Python как строка. Любая буква, цифра или символ могут быть частью шипа.

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

>>> str = 'A string wrapped in single quotes'
>>> str
'A string wrapped in single quotes'
>>> str = "A string enclosed within double quotes"
>>> str
'A string enclosed within double quotes'
>>> str = """A multiline string
starts and ends with
a triple quotation mark."""
>>> str
'A multiline string\nstarts and ends with\na triple quotation mark.'

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

>>> A = 'Python3' 
>>> id(A) 
56272968 
>>> B = A 
>>> id(B) 
56272968

Вы можете видеть, что вторая строка имеет тот же адрес, что и первая.

У Python есть две популярные версии: 2.7 и 3.4. Большинство программистов во всем мире используют любой из них. Строки в Python 2 по умолчанию не являются Unicode (ASCII), но Unicode также поддерживается.

С другой стороны, все строки Python 3 имеют кодировку Unicode (UTF-8).

Строки в Python 2.

>>> print(type('Python String')) 
<type 'str'> 
>>> print(type(u'Python Unicode String')) 
<type 'unicode'>

Строки в Python 3.

>>> print(type('Python String')) 
<class 'str'> 
>>> print(type(u'Python Unicode String')) 
<class 'str'>

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

>>> str = "Learn Python"
>>> first_5_chars = str[0:5]
>>> print(first_5_chars)
Learn
>>> substr_from_2_to_5 = str[1:5]
>>> print(substr_from_2_to_5)
earn
>>> substr_from_6_to_end = str[6:]
>>> print(substr_from_6_to_end)
Python
>>> last_2_chars = str[-2:]
>>> print(last_2_chars)
on
>>> first_2_chars = str[:2]
>>> print(first_2_chars)
Le
>>> two_chars_before_last = str[-3:-1]
>>> print(two_chars_before_last)
ho

вернуться к содержанию


🎯 4.Байт

Байты являются неизменяемыми типами в Python. Он может хранить последовательности байтов от 0 до 255 (по 8 бит каждый). Подобно массивам, мы можем использовать индекс для получения значения одного байта. Но мы не можем изменить это значение.

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

  • Объекты Bytes содержат последовательности байтов, а строки хранят последовательности символов.
  • Байты — это машиночитаемые объекты, тогда как строки — это просто человекочитаемые формы.
  • Поскольку байты доступны для машинного чтения, их можно хранить непосредственно на диске. И прежде чем попасть на диск, строку сначала нужно закодировать.
>>> # Make an empty bytes object (8-bit bytes)
>>> empty_object = bytes(16)
>>> print(type(empty_object))
<class 'bytes'>
>>> print(empty_object)
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

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

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

buf = b'' 
while message_not_complete(buf): 
    buf += read_from_socket()

вернуться к содержанию


🛫 5. Списки

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

  • Это гетерогенный набор элементов данных разных типов. Например, объект списка может хранить файлы в папках или хранить данные о сотрудниках в компаниях и т. д.

Синтаксис списка PythonСписки в Python можно создавать, помещая элементы в以逗号分隔的方括号内объявить.

>>> assorted_list = [True, False, 1, 1.1, 1+2j, 'Learn', b'Python']
>>> first_element = assorted_list[0]
>>> print(first_element)
True
>>> print(assorted_list)
[True, False, 1, 1.1, (1+2j), 'Learn', b'Python']
>>> for item in assorted_list:
	print(type(item))

<class 'bool'>
<class 'bool'>
<class 'int'>
<class 'float'>
<class 'complex'>
<class 'str'>
<class 'bytes'>
  • Объекты списка изменяемы. Python позволяет изменять списки или их элементы с помощью присваивания и встроенных методов списка.
>>> simpleton = ['Learn', 'Python', '2'] 
>>> id(simpleton) 
56321160 
>>> simpleton 
['Learn', 'Python', '2'] 
>>> simpleton[2] = '3' 
>>> id(simpleton) 
56321160 
>>> simpleton 
['Learn', 'Python', '3']

вложенный в список

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

>>> nested = [[1,1,1], [2,2,2], [3,3,3]]
>>> for items in nested:
	for item in items:
		print(item, end=' ')
		
1 1 1 2 2 2 3 3 3

список фрагментов

Списки также являются одним из типов данных Python, которые поддерживают срезы, точно так же, как мы узнали ранее со строками. Используя оператор среза [ ], мы можем извлечь элемент или группу элементов из списка.

>>> languages = ['C', 'C++', 'Python', 'Java', 'Go', 'Angular']
>>> print('languages[0:3] = ', languages[0:3])
languages[0:3] =  ['C', 'C++', 'Python']
>>> print('languages[2:] = ', languages[2:])
languages[2:] =  ['Python', 'Java', 'Go', 'Angular']

вернуться к содержанию


🎡 6. Кортежи

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

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

Синтаксис кортежа Python

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

Пример — определение кортежа

# Defining a tuple without any element
pure_tuple = ()
print (pure_tuple)
# Output- ()

Пример — вложенные кортежи

# Creating a tuple with nested tuples
first_tuple = (3, 5, 7, 9)
second_tuple = ('learn', 'python 3')
nested_tuple = (first_tuple, second_tuple)
print(nested_tuple)
# Output - ((3, 5, 7, 9), ('learn', 'python 3'))

Пример - повторение в кортеже

# How does repetition work with tuples
sample_tuple = ('Python 3',)*3
print(sample_tuple)
# Output - ('Python 3', 'Python 3', 'Python 3')

Пример — нарезка кортежа

# How does slicing work with tuples
 
sample_tuple = (0 ,1, 2, 3, 4)

tuple_without_first_item = sample_tuple[1:]
print(tuple_without_first_item)

tuple_reverse = sample_tuple[::-1]
print(tuple_reverse)

tuple_from_3_to_5 = sample_tuple[2:4]
print(tuple_from_3_to_5)
# Output - 
(1, 2, 3, 4)
(4, 3, 2, 1, 0)
(2, 3)

важный намек– При нарезке в приведенном выше примере «2» означает начало с третьего элемента в кортеже (индексы срезов начинаются с 0). «4» означает конец на пятом элементе кортежа, но исключает его.

Чем кортежи отличаются от списков?

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

Что, если кортеж содержит изменяемые объекты в качестве элементов?

А вот и сюрприз. Модификация кортежей запрещена. Но Python не применяет его к элементам. Это означает, что мы можем обновить их, если они являются изменяемыми объектами.

Зачем вам нужен кортеж как один из типов данных Python?

Вот несколько идей для поддержки кортежей.

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

вернуться к содержанию


🥘 7. Наборы

Среди всех типов данных Python Sets — это набор, который поддерживает математические операции, такие как объединение, пересечение и симметричная разность.

Коллекция — это неупорядоченная коллекция уникальных и неизменяемых объектов. Его определение начинается с заключения фигурных скобок {} с элементами, разделенными запятыми.

Поскольку реализация набора происходит от «набора» в математике, один и тот же элемент не может появляться более одного раза.

Зачем нужна коллекция?

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

создать коллекцию

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

>>> sample_set = set("Python data types")
>>> type(sample_set)
<class 'set'>
>>> sample_set
{'e', 'y', 't', 'o', ' ', 'd', 's', 'P', 'p', 'n', 'h', 'a'}

Другой более простой способ — указать элементы, заключенные в фигурные скобки {}.

>>> another_set = {'red', 'green', 'black'} 
>>> type(another_set) 
<class 'set'> 
>>> another_set 
{'red', 'green', 'black'}

Frozen set

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

# An empty frozenset
>>> frozenset()
frozenset()
>>> cities = {"New York City", "Saint Petersburg", "London", "Munich", "Paris"}
>>> fset = frozenset(cities)
>>> type(fset)
<class 'frozenset'>

Теперь посмотрите на полный пример, чтобы подчеркнуть разницу между обычными и фиксированными наборами.

# Python program to demonstrate frozen set

# A standard set
 sample_set = {"red", "green"}
 
 # Add an element to the standard set
 sample_set.add("black")
 
 print("Standard Set")
 print(sample_set)
 
 # A frozen set
 frozen_set = frozenset(["red", "green", "black"])
 
 print("Frozen Set")
 print(frozen_set)
 # Output -
 Standard Set
 {'green', 'red', 'black'}
 Frozen Set
 frozenset({'green', 'red', 'black'})

вернуться к содержанию


🥅 8.Словари

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

Зачем тебе словарь?

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

создать словарь

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

>>> sample_dict = {'key':'value', 'jan':31, 'feb':28, 'mar':31} 
>>> type(sample_dict) 
<class 'dict'> 
>>> sample_dict 
{ 'mar':31,'key':'value','jan':31,'feb':28}

Доступ к элементам словаря с помощью ключей

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

>>> sample_dict['jan'] 
31 
>>> sample_dict['feb'] 
28

Как получить доступ к элементам в словаре Python предоставляет следующие встроенные функции словаря.

  • keys() — Изолировать ключи от словаря.
  • values() — изолирует значения из словаря.
  • items() — возвращает элементы в виде списка пар (ключ, значение).
>>> sample_dict.keys() 
dict_keys(['mar', 'key', 'jan', 'feb']) 
>>> sample_dict.values() 
dict_values([31, 'value', 31, 28]) 
>>> sample_dict.items() 
dict_items([('mar', 31), ('key', 'value'), ('jan', 31), ('feb', 28)])

Изменить словарь (добавить/обновить/удалить)

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

См. приведенный ниже пример для получения дополнительной информации о том, как изменить словарь.

>>> sample_dict['feb'] = 29 
>>> sample_dict 
{'mar': 31, 'key': 'value', 'jan': 31, 'feb': 29} 
>>> sample_dict.update({ 'apr':30}) 
>>> sample_dict 
{'apr': 30, 'mar': 31, 'key': 'value', 'jan': 31, 'feb': 29} 
>>> del sample_dict[ 'key'] 
>>> sample_dict 
{'apr':30,'mar':31,'jan':31,'feb':29}

вернуться к содержанию


🍺 Краткое резюме — типы данных Python

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

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

Github,Gitee

🧵 Другие статьи по теме

Рекомендуемые статьи из прошлого:

Если вы действительно узнали что-то новое из этой статьи, ставьте лайк, добавляйте в закладки и делитесь с друзьями. 🤗Наконец, не забудьте поддержать ❤ или 📑