June 1, 2020

Переменные и типы данных

Переменные в Python:

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

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

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

Присвоение значения переменной:

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

Операнд по левую сторону от знака равно ( = ) это имя переменной, операнд по правую сторону - значение присвоенное этой переменной.

Например:

?1234country = "Swiss" # Присвоить значение Swiss переменной под названием countryage = 23 # Присвоение значения 23 переменной age print countryprint age

При выполнении, данный код выведет:

12 = Swiss23

Множественное присвоение значений:

В Python возможно присваивать одно значение нескольким переменным сразу. Например:

1 = a = b = c = 1

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

Встроенные типы данных в Python:

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

К стандартным типам данных в Python относят:

Числовой тип данных в Python:

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

Числовые объекты создаются, когда вы присваиваете им значение. Например:

?12num1 = 23num2 = 42

Также вы можете удалять числовой объект при помощи ключевого слова del. Синтаксис команды del следующий:

?12del num1 # удаляет переменную num1del num2, num3 # удаляет обе переменные num2 за num3 за раз

В Python есть четыре вида числового типа данных:

  • int (целое число)
  • long (длинное целое число [может быть представлено в восьмеричной или шестнадцатеричной системе исчисления])
  • float (число с плавающей точкой: -0.2, 0.0, 3.14159265 и т.д.)
  • complex (комплексное число)

Примеры видов числового типа данных:

intlongfloatcomplex151924361L0.03.14j102-0x19323L15.2045.j-7860122L-21.99.322e-36j00xDEFABCECBDAECBFBAEl32.3+e18.876j0b10535633629843L-90.-.6545+0J-0x260-052318172735L-32.54e1003e+26J0x69-4721885298529L70.2-E124.53e-7j

Строки в Python:

Под строками в Python подразумевается набор символов между кавычками. В Python можно использовать пары одинарных либо двойных кавычек. Из строк можно взять подстроку используя оператор нарезки ( [ ] и [ : ] ) с индексами от нуля для первого символа строки и до последнего. Так же можно использовать обратную индексацию от -1 для последнего символа до начала.

Оператор плюс ( + ) для строк соединяет две строки в одну, звездочка ( * ) оператор повторения. Например:

?1234567891011121314text = "Hello, Python!"print text[0] # Выводит первый символprint text[0:5] # Выводит подстроку text от 0 символа до 5 (включительно с нулевым, исключая пятый)print text[4:10] # Выведет строку от 4 символа до 10 (включая четвертый, исключая 10)print text[0:14] # Выведет всю строкуprint text[7:] # Выведет строку с 7 символа до концаprint text[:5] # Выведет строку с начала до 5 символа. Аналогично print text[0:5]print text[:] # Выведет всю строкуprint text[-1] # Выводит последний символprint text[-1:-14] # Не сработает, выведет пустую строкуprint text[::2] # Третий аргумент - шаг. Выведет каждый второй символprint text[::-1] # Шаг отрицательный. Выведет фразу наоборотprint text + "Nice to code you" # Выведет новую строкуprint text[-1] * 10 # Выведет 10 восклицательных знаков

В результате вы увидите следующее

Списки в Python:

Списки, пожалуй, самый универсальный составной тип данных в Python. Список состоит из элементов, разделенных запятыми, находящихся между квадратными скобками ( [ ] ). В определенной мере, списки подобны массивам в C. Единственной разницей является то, что элементы одного списка могут иметь разные типы данных.

Получить доступ к элементам, сохраненным в списке можно, точно так же, как и в строках, при помощи оператора нарезки ( [ ] и [:] ) и индексов, начиная с нуля и до конца. Знак плюс ( + ) объединяет два списка, а звездочка ( * ) - оператор повторения для списка. Например:

?123456789my_list =[True, 786, 3.14, 'text', 70.2]second_list =[123, 'text'] print my_list # Напечатает весь списокprint my_list[0] # Напечатает первый элемент спискаprint my_list[1:3] # Напечатает элементы списка со второго по третий print my_list[2:] # Напечатает элементы списка начиная с третьегоprint second_list *2 # Напечатает удвоенный списокprint my_list + second_list # Напечатает объединенные списки

В результате вы увидите:

?123456[True, 786, 3.14, 'text', 70.2]True[786, 3.14][3.14, 'text', 70.2][123, 'text', 123, 'text'][True, 786, 3.14, 'text', 70.2, 123, 'text']

Кортежи в Python:

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

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

?1234567my_tuple =(True, 786, 3.14, 'text', 70.2)second_tuple =(123, 'text') print my_tuple # Печатает весь кортежrint my_tuple[0] # Печатает первый элементprint second_tuple *2 # Печатает удвоенный кортежprint my_tuple + second_tuple # Печатает объединенные кортежи

В результате вы получите:

?1234(True, 786, 3.14, 'text', 70.2)True(123, 'text', 123, 'text')(True, 786, 3.14, 'text', 70.2, 123, 'text')

При этом, следующие действия доступны для списков и недоступны для кортежей:

?12345my_list = ["Rome", 23, ["cat","dog"], True, 3.14]my_tuple = ("Rome", 23, ["cat","dog"], True, 3.14) my_list[0] = "Paris" # Замена значения первого элемента сработает для спискаmy_tuple[0] = "Paris" # Та же операция для кортежа вызовет ошибку

Словари в Python:

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

Пары ключ, значение словаря заключаются в фигурные скобки ( { } ). Есть несколько способов создания словарей:

?12345678my_dict = { } # Создаем пустой словарьmy_dict["country"] = "Mexico" # Присваиваем ключу country значение Mexicoprint my_dict["country"] # Выведет Mexico # Заполнение словаря при инициализацииanother_dict = {"number":23, 2: True, "my_list":[1,2,3]}print another_dict.keys() # Напечатает список всех ключейprint another_dict.values() # Напечатает список всех значений

Данный код выведет следующее:

Обратите внимание, что ключи и значения выводятся не в том порядке, в котором мы их задавали.

Сеты в Python:

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

Создать сеты можно следующими способами:

?1234# Создание пустого сетаs = set()# Создание сета инициализациейs = {"hi", "bye"}

Для добавление элемента в сет используется метод add, для удаления - pop или remove. Добавление в сет уже существующего элемента не повлияет на сет. Сеты обладают множеством методов для работы с уникальными элементами, например difference - возвращает элементы сета отсутствующие в другом сете, intersection - наоборот, возвращает елементы сета присутствующие в другом сете.