Как конвертировать типы данных в Python 3

Вступление

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

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

Преобразование типов чисел

В Python есть дваnumber data types:integers иfloating-point numbers или числа с плавающей запятой. Иногда вы работаете над чужим кодом и вам нужно будет преобразовать целое число в число с плавающей точкой или наоборот, или вы можете обнаружить, что вы использовали целое число, когда то, что вам действительно нужно, это число с плавающей точкой. Python имеет встроенные методы, позволяющие вам легко преобразовывать целые числа в числа с плавающей точкой и числа с плавающей точкой в ​​целые числа.

Преобразование целых чисел в числа с плавающей точкой

Метод Pythonfloat() преобразует целые числа в числа с плавающей запятой. Чтобы использовать эту функцию, добавьте целое число внутри скобок:

float(57)

В этом случае57 будет преобразовано в57.0.

Вы также можете использовать это с переменной. Давайте объявимf равным57, а затем распечатаем новое значение с плавающей запятой:

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 соответствующие частные преобразуются из целых чисел в числа с плавающей запятой при выполненииdivision, хотя они не находятся вPython 2. То есть, когда вы разделите 5 на 2, в Python 3 вы получите плавающий ответ (2.5):

a = 5 / 2
print(a)
Output2.5

В Python 2, поскольку вы имели дело с двумя целыми числами, вместо этого вы получили бы целое число в качестве ответа:5 / 2 = 2. Прочтите «https://www.digitalocean.com/community/tutorials/python-2-vs-python-3-practical-considerations-2[Python 2 против Python 3: Практические рекомендации]» для получения дополнительной информации о различиях между Python 2 и Python 3.

Преобразование со строками

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

Преобразование чисел в строки

Мы можем преобразовывать числа в строки с помощью метода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't convert 'int' object to str implicitly

Мы не можем объединять строки и целые числа в 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.

Если мы хотим преобразовать число с плавающей точкой в ​​строку, а не целое число в строку, мы следуем тем же шагам и формату. Когда мы передаем float в методstr(), будет возвращено строковое значение float. Мы можем использовать либо само значение с плавающей точкой, либо переменную:

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.

Мы можем быть уверены, что наш float был правильно преобразован в строку, потому что конкатенация была выполнена без ошибок.

Преобразование строк в числа

Строки можно преобразовать в числа с помощью методов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() для преобразования переданных им значений в тип данных списка и кортежа соответственно. В Python:

  • 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 обеспечивает дополнительную гибкость при написании программ.