Вступление
В 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:
Преобразование в кортежи
Давайте начнем с преобразования списка в кортеж. Преобразование списка в кортеж, потому что это неизменяемый тип данных, может позволить существенную оптимизацию создаваемых нами программ. Когда мы используем метод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 обеспечивает дополнительную гибкость при написании программ.