Как преобразовать типы данных в Python 3
Введение
В Python типы данных используются для классификации одного конкретного типа данных, определения значений, которые вы можете присвоить типу, и операций, которые вы можете выполнять над ним. При программировании иногда нам нужно преобразовывать значения между типами, чтобы манипулировать значениями по-другому. Например, нам может понадобиться объединить числовые значения со строками или представить десятичные разряды в числах, которые были инициализированы как целые значения.
Этот учебник поможет вам преобразовать числа, строки, кортежи и списки, а также предоставит примеры, которые помогут вам ознакомиться с различными вариантами использования.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.).
Преобразование числовых типов
В Python есть два числа с плавающей запятой или числа с плавающей запятой. Иногда вы работаете над чужим кодом и вам нужно преобразовать целое число в число с плавающей запятой или наоборот, или вы можете обнаружить, что использовали целое число, когда вам действительно нужно число с плавающей запятой. Python имеет встроенные методы, позволяющие легко преобразовывать целые числа в числа с плавающей запятой и числа с плавающей запятой в целые числа.
Преобразование целых чисел в числа с плавающей запятой
Метод Python float()
преобразует целые числа в числа с плавающей запятой. Чтобы использовать эту функцию, добавьте целое число в скобках:
Информация: Чтобы следовать примеру кода в этом руководстве, откройте интерактивную оболочку Python в вашей локальной системе, выполнив команду python3
. Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>
.
float(57)
В этом случае 57
будет преобразовано в 57.0
.
Вы также можете использовать это с переменной. Давайте объявим f
равным 57
, а затем распечатаем новый float:
f = 57
print(float(f))
Output57.0
Используя функцию float()
, мы можем преобразовать целые числа в числа с плавающей запятой.
Преобразование чисел с плавающей запятой в целые числа
Python также имеет встроенную функцию для преобразования чисел с плавающей запятой в целые числа: int()
.
Функция int()
работает аналогично функции float()
: вы можете добавить число с плавающей запятой внутри круглых скобок, чтобы преобразовать его в целое число:
int(390.8)
В этом случае 390.8
будет преобразовано в 390
.
Вы также можете использовать это с переменными. Давайте объявим b
равным 125,0
, а c
равным 390,8
, а затем распечатаем новые числа с плавающей запятой:
b = 125.0
c = 390.8
print(int(b))
print(int(c))
Output125
390
При преобразовании чисел с плавающей запятой в целые числа с помощью функции int()
Python отсекает десятичные и оставшиеся числа числа с плавающей запятой, чтобы создать целое число. Хотя нам может понадобиться округлить 390,8 до 391, Python не сделает этого с помощью функции int()
.
Числа, преобразованные делением
В Python 3 соответствующие частные преобразуются из целых чисел в числа с плавающей запятой при выполнении Python 2. То есть, когда вы делите 5 на 2, в Python 3 вы получите число с плавающей запятой для ответа (2.5):
a = 5 / 2
print(a)
Output2.5
В Python 2, поскольку вы имели дело с двумя целыми числами, вместо этого вы получили целое число в качестве ответа: 5/2=2
. Прочтите «Python 2 против Python 3: Практические соображения» для получения дополнительной информации о различиях между Python 2 и Python 3.
Преобразование со строками
Строка представляет собой последовательность из одного или нескольких символов (буквы, цифры, символы). Строки — это распространенная форма данных в компьютерных программах, и нам может потребоваться довольно часто преобразовывать строки в числа или числа в строки, особенно когда мы получаем данные, созданные пользователем.
Преобразование чисел в строки
Мы можем преобразовать числа в строки с помощью метода str()
. Мы передадим либо число, либо переменную в круглые скобки метода, а затем это числовое значение будет преобразовано в строковое значение.
Давайте сначала посмотрим на преобразование целых чисел. Чтобы преобразовать целое число 12
в строковое значение, вы можете передать 12
в метод str()
:
str(12)
При запуске str(12)
в интерактивной оболочке Python с командой python
в окне терминала вы получите следующий вывод:
Output'12'
Кавычки вокруг числа 12 означают, что число больше не является целым числом, а теперь является строковым значением.
С переменными мы можем начать понимать, насколько практичным может быть преобразование целых чисел в строки. Допустим, мы хотим отслеживать ежедневный прогресс пользователя в программировании и вводим, сколько строк кода они пишут за раз. Мы хотели бы показать эту обратную связь пользователю и одновременно будем печатать строковые и целочисленные значения:
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")
Когда мы запускаем этот код, мы получаем следующую ошибку:
OutputTypeError: can only concatenate str (not "int") to str
Мы не можем объединять строки и целые числа в Python, поэтому нам придется преобразовать переменную lines
в строковое значение:
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")
Теперь, когда мы запускаем код, мы получаем следующий вывод, который поздравляет нашего пользователя с его прогрессом:
OutputCongratulations, Sammy! You just wrote 50 lines of code.
Если мы хотим преобразовать число с плавающей запятой в строку, а не целое число в строку, мы следуем тем же шагам и формату. Когда мы передаем число с плавающей запятой в метод str()
, будет возвращено строковое значение числа с плавающей запятой. Мы можем использовать либо само значение с плавающей запятой, либо переменную:
print(str(421.034))
f = 5524.53
print(str(f))
Output421.034
5524.53
Мы можем проверить, чтобы убедиться, что это правильно, объединив строку:
f = 5524.53
print("Sammy has " + str(f) + " points.")
OutputSammy has 5524.53 points.
Мы можем быть уверены, что наше число с плавающей запятой было правильно преобразовано в строку, потому что конкатенация была выполнена без ошибок.
Преобразование строк в числа
Строки можно преобразовать в числа с помощью методов int()
и float()
.
Если в вашей строке нет десятичных разрядов, вы, скорее всего, захотите преобразовать ее в целое число с помощью метода int()
.
Давайте возьмем пример пользователя Sammy, который отслеживает строки кода, написанные каждый день. Мы можем захотеть манипулировать этими значениями с помощью математики, чтобы предоставить пользователю более интересную обратную связь, но в настоящее время эти значения хранятся в строках:
lines_yesterday = "50"
lines_today = "108"
lines_more = lines_today - lines_yesterday
print(lines_more)
OutputTypeError: unsupported operand type(s) for -: 'str' and 'str'
Поскольку два числовых значения были сохранены в строках, мы получили ошибку. Операнд -
для вычитания не является допустимым операндом для двух строковых значений.
Давайте изменим код, включив в него метод int()
, который будет преобразовывать строки в целые числа и позволит нам выполнять математические операции со значениями, которые изначально были строками.
lines_yesterday = "50"
lines_today = "108"
lines_more = int(lines_today) - int(lines_yesterday)
print(lines_more)
Output58
Переменная lines_more
автоматически является целым числом, и в этом примере она равна числовому значению 58.
Мы также можем преобразовать числа в приведенном выше примере в значения с плавающей запятой, используя метод float()
вместо метода int()
. Вместо получения вывода 58
мы получим вывод 58.0
, число с плавающей запятой.
Пользователь Sammy зарабатывает очки в десятичных числах
total_points = "5524.53"
new_points = "45.30"
new_total_points = total_points + new_points
print(new_total_points)
Output5524.5345.30
В этом случае использование операнда +
с двумя строками является допустимой операцией, но это объединение двух строк, а не сложение двух числовых значений вместе. Итак, наш вывод выглядит необычно, поскольку он просто размещает два значения рядом друг с другом.
Мы хотим преобразовать эти строки в числа с плавающей запятой перед выполнением каких-либо математических операций с помощью метода float()
:
total_points = "5524.53"
new_points = "45.30"
new_total_points = float(total_points) + float(new_points)
print(new_total_points)
Output5569.83
Теперь, когда мы преобразовали две строки в числа с плавающей запятой, мы получили ожидаемый результат, добавляющий 45,30
к 5524,53
.
Если мы попытаемся преобразовать строковое значение с десятичными знаками в целое число, мы получим ошибку:
f = "54.23"
print(int(f))
OutputValueError: invalid literal for int() with base 10: '54.23'
Если мы передадим десятичное значение в строке методу int()
, мы получим ошибку, потому что оно не будет преобразовано в целое число.
Преобразование строк в числа позволяет нам быстро изменить тип данных, с которым мы работаем, чтобы мы могли выполнять операции с числовыми значениями, которые изначально были преобразованы в строки.
Преобразование в кортежи и списки
Вы можете использовать методы list()
и tuple()
для преобразования переданных им значений в тип данных списка и кортежа соответственно. В Питоне:
- список – это изменяемая упорядоченная последовательность элементов, заключенная в квадратные скобки
[ ]
. - кортеж — это неизменяемая упорядоченная последовательность элементов, заключенная в круглые скобки
()
.
Преобразование в кортежи
Начнем с преобразования списка в кортеж. Преобразование списка в кортеж, поскольку это неизменяемый тип данных, может позволить существенно оптимизировать создаваемые нами программы. Когда мы используем метод tuple()
, он возвращает кортежную версию переданного ему значения.
print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output('pull request', 'open source', 'repository', 'branch')
Мы видим, что на выходе выводится кортеж, так как элементы теперь содержатся в скобках, а не в квадратных скобках.
Давайте используем tuple()
с переменной, представляющей список:
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
Output('shark', 'cuttlefish', 'squid', 'mantis shrimp')
Опять же, мы видим, что значение списка изменено на значение кортежа, указанное в круглых скобках. Мы можем преобразовать любой итерируемый тип в кортеж, включая строки:
print(tuple('Sammy'))
Output('S', 'a', 'm', 'm', 'y')
Поскольку мы можем перебирать строки, мы можем преобразовать их в кортежи с помощью метода tuple()
. Однако с типами данных, которые не являются итерируемыми, такими как целые числа и числа с плавающей запятой, мы получим ошибку типа:
print(tuple(5000))
OutputTypeError: 'int' object is not iterable
Хотя можно преобразовать целое число в строку, а затем преобразовать в кортеж, как в tuple(str(5000))
, лучше использовать читаемый код, а не сложные преобразования.
Преобразование в списки
Преобразование значений, особенно кортежей, в списки может быть полезно, когда вам нужна изменяемая версия этого значения.
Мы будем использовать метод list()
для преобразования следующего кортежа в список. Поскольку синтаксис для создания списка использует круглые скобки, обязательно включите круглые скобки в метод list()
, а в данном случае также и в метод print()
:
print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Output['blue coral', 'staghorn coral', 'pillar coral']
Квадратные скобки означают, что список был возвращен из исходного значения кортежа, которое было передано через метод list()
.
Чтобы сделать код более читабельным, мы можем удалить одну из пар скобок, используя переменную:
coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)
Если мы напечатаем list(coral)
, мы получим тот же вывод, что и выше.
Как и кортежи, строки могут быть преобразованы в списки:
print(list('shark'))
Output['s', 'h', 'a', 'r', 'k']
Здесь строка shark
была преобразована в список, предоставляя изменяемую версию исходного значения.
Заключение
В этом руководстве по Python показано, как преобразовать несколько важных собственных типов данных в другие типы данных, в основном с помощью встроенных методов. Возможность конвертировать типы данных в Python обеспечивает дополнительную гибкость при написании программ.