Как поменять тип переменной в питоне
Перейти к содержимому

Как поменять тип переменной в питоне

  • автор:

№6 Присвоение типа переменной / Уроки по Python для начинающих

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

Преобразование в Python выполняется с использованием функций-конструкторов:

  • int() — создает целочисленное число из числового значения, либо значения с плавающей точкой (округляя его до предыдущего целого числа) или строкового значение (при условии, что данная строка является целым числом)
  • float() — так же создает число, но с плавающей точкой из целочисленного значения, значения с плавающей точкой или строкового (при условии, что строка представляет собой число с плавающей точкой или целое число)
  • str() — создает строку из многих типов данных, включая строки, целые числа и числа с плавающей точкой.

int(): пример преобразования

x = int(1) # x станет 1 y = int(2.8) # y станет 2 z = int("3") # z станет 3 

float(): пример преобразования

x = float(1) # x станет 1.0 y = float(2.8) # y станет 2.8 z = float("3") # z станет 3.0 w = float("4.2") # w станет 4.2 

str(): пример преобразования

x = str("s1") # x станет 's1' y = str(2) # y станет '2' z = str(3.0) # z станет '3.0' 

ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ В PYTHON

С помощью функции complex() удобно формировать комплексные числа, указывая через запятую два аргумента: действительную часть и мнимую часть.

a = complex(3.2, 1.5) print(a) 
(3.2+1.5j) 

Смешанная арифметика

Python поддерживает смешанную арифметику в выражениях, состоящих из чисел разных типов. При этом целочисленный тип (int) при необходимости расширяется до дробного (float), а дробный — до комплексного (complex). То же самое происходит при сравнении чисел разного типа.

Системы счисления

Для преобразования чисел в двоичную, восьмиричную и шестнадцатиричную систему служат функции bin(), oct() и hex(). Эти функции возвращают строковые представления чисел, что необходимо учитывать при работе с ними.

a = hex(38) print(a) 
0x26 

Преобразовать строковое представление недесятичного числа в десятичную систему можно с помощью функции int(), указав вторым аргументом основание системы счисления (от 2 до 36 включительно).

a = '0x26' b = int(a, base=16) print(b) 

Округление

Для округления чисел с плавающей точкой используется функция round(). Функция использует банковское округление (по Гауссу) до ближайшего чётного целого, чтобы избежать серийного накопления погрешности. Например, round(1.5) + round(2.5) будет равен 4. При обычном математическом округлении сумма округленных чисел будет равна 5.

С помощью второго аргумента функции round() можно округлить число до заданного количества знаков после запятой. Если воторой аргумент не задан, то число округляется до целого.

a = round(1.5) print(a) b = round(2.5) print(b) c = round(6.4567, 2) print(c) d = round(4.35, 1) print(d) e = round(4.45, 1) print(e) 
2 2 6.46 4.7 4.5 

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

Для преобразования в строку используется функция str(). Аргументом функции str() может выступать число, строка, кортеж, список, множество, словарь, логическое значение, None.

Любой объект, преобразованный в строку, становится просто набором символов.

a = 5.3 x = str(a) print(x, type(a), type(x)) 

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

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

При преобразовании строки в список, мы получаем список, состоящий из символов строки.

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

b = 'Python' x = list(b) print(x) c = (3, 4) x = list(c) print(x) d = [5, 6] x = list(d) print(x) e = x = list(e) print(x) f = x = list(f) print(x) 
['P', 'y', 't', 'h', 'o', 'n'] [3, 4] [5, 6] [8, 7] [1, 2] 

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

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

Преобразование в кортеж происходит по тому же принципу, по которому происходит преобразование в список.

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

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

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

a = [5, 6, 5, 6, 7] x = set(a) print(x) 

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

a = 227 x = set(str(a)) print(x) 

Преобразование в словарь

Для преобразования в словарь используется функция dict().

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

f = [[1, 'яблоко'], [2, 'тыква']] x = dict(f) print(x) 

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

Для преобразования в логический тип используется функция bool().

Функция bool() вернет False, если в качестве аргумента выступает пустая строка, нулевое число, None, пустой список, пустой кортеж или пустое множество. Непустая строка, ненулевое число, даже если оно отрицательное, вернут True. Непустое множество, непустой список или непустой кортеж, даже если они содержат один пустой элемент, вернут True.

a = -7 x = bool(a) print(x) b = '' x = bool(b) print(x) c = x = bool(c) print(x) 
True False True 

Преобразование типов данных в Python 3

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

Данное руководство научит вас преобразовывать числа, строки, кортежи и списки.

Читайте также: Типы данных в Python 3

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

В Python существует два числовых типа данных: целые числа и числа с плавающей точкой. Для преобразования целых чисел в числа с плавающей точкой и наоборот Python предоставляет специальные встроенные методы.

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

Метод float() преобразовывает целые числа в числа с плавающей точкой. Число указывается в круглых скобках:

Это преобразует число 57 в 57.0.

Также можно использовать переменные. Объявите переменную f = 57, а затем выведите число с плавающей точкой:

f = 57
print(float(f))
57.0

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

Встроенная функция int() предназначена для преобразования чисел с плавающей точкой в целые числа.

Функция int() работает так же, как и float(). Чтобы преобразовать число, добавьте его в круглые скобки:

Число 390.8 преобразуется в 390.

Эта функция также может работать с переменными. Объявите переменные:

b = 125.0
c = 390.8

Затем преобразуйте и отобразите их:

print(int(b))
print(int(c))
125
390

Чтобы получить целое число, функция int() отбрасывает знаки после запятой, не округляя их (потому 390.8 не преобразовывается в 391).

Преобразование чисел с помощью деления

При делении Python 3 может преобразовать целое число в число с плавающей точкой (в Python 2 такой функции нет). К примеру, разделив 5 на 2, вы получите 2.5.

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

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

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

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

Чтобы конвертировать число в строку, используйте метод str(). Поместите число или переменную в круглые скобки.

Попробуйте преобразовать целое число, например:

Запустив метод str(12) в интерактивной оболочке Python (с помощью команды python), вы получите вывод:

Кавычки означают, что теперь 12 является строкой, а не числом.

Особенно полезно преобразовывать числа в строки, используя переменные. К примеру, можно отследить, сколько строк кода в день пишет тот или иной пользователь. Если пользователь пишет больше 50 строк, программа отправит ему поощрительное сообщение.

user = «Michael»
lines = 50
print(«Congratulations, » + user + «! You just wrote » + lines + » lines of code.»)

Запустив этот код, вы получите ошибку:

TypeError: Can’t convert ‘int’ object to str implicitly

Python не может склеивать строки с числами, потому нужно преобразовать значение lines в строку.

user = «Michael»
lines = 50
print(«Congratulations, » + user + «! You just wrote » + str(lines) + » lines of code.»)

Теперь, запустив код, вы увидите:

Congratulations, Michael! You just wrote 50 lines of code.

Метод str() может преобразовать в строку и число с плавающей точкой. Поместите в круглые скобки число или переменную:

print(str(421.034))
f = 5524.53
print(str(f))
421.034
5524.53

Попробуйте выполнить конкатенацию строки и преобразованного в строку числа:

f = 5524.53
print(«Michael has » + str(f) + » points.»)
Michael has 5524.53 points.

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

Строки можно преобразовать в числа с помощью методов int() и float()

Если в строке нет десятичных знаков, лучше преобразовать её в целое число. Для этого используется int().

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

lines_yesterday = «50»
lines_today = «108»
lines_more = lines_today — lines_yesterday
print(lines_more)
TypeError: unsupported operand type(s) for -: ‘str’ and ‘str’

При запуске возникла ошибка, поскольку Python не может выполнить сложение строк. Преобразуйте строки в числа и попробуйте снова запустить программу:

lines_yesterday = «50»
lines_today = «108»
lines_more = int(lines_today) — int(lines_yesterday)
print(lines_more)
58

Значение переменной lines_more – это число, в данном случае это 58.

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

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

total_points = «5524.53»
new_points = «45.30»
new_total_points = total_points + new_points
print(new_total_points)
5524.5345.30

В данном случае оператор + склеивает две строки, а не складывает числа. Потому в результате получилось довольно странное значение.

Конвертируйте эти строки в числа с плавающей точкой, а затем выполните сложение.

total_points = «5524.53»
new_points = «45.30»
new_total_points = float(total_points) + float(new_points)
print(new_total_points)
5569.83

Как видите, теперь программа возвращает ожидаемый результат.

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

f = «54.23»
print(int(f))
ValueError: invalid literal for int() with base 10: ‘54.23’

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

Чтобы преобразовать данные в кортеж или список, используйте методы tuple() и list() соответственно. В Python:

  • Список – это изменяемая упорядоченная последовательность элементов, взятая в квадратные скобки ([ ]).
  • Кортеж – неизменяемая упорядоченная последовательность элементов, взятая в круглые скобки.

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

Преобразовывая список в кортеж, вы можете оптимизировать программу. Для преобразования в кортеж используется метод tuple().

print(tuple([‘pull request’, ‘open source’, ‘repository’, ‘branch’]))
(‘pull request’, ‘open source’, ‘repository’, ‘branch’)

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

Попробуйте использовать tuple() с переменной:

sea_creatures = [‘shark’, ‘cuttlefish’, ‘squid’, ‘mantis shrimp’] print(tuple(sea_creatures))
(‘shark’, ‘cuttlefish’, ‘squid’, ‘mantis shrimp’)

В кортеж можно преобразовать любой итерируемый тип, включая строки:

Конвертируя в кортеж числовой тип данных, вы получите ошибку:

print(tuple(5000))
TypeError: ‘int’ object is not iterable

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

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

Обратите внимание: при этом в методах list() и print() используется две пары круглых скобок. Одни принадлежать собственно методу, а другие – кортежу.

print(list((‘blue coral’, ‘staghorn coral’, ‘pillar coral’)))
[‘blue coral’, ‘staghorn coral’, ‘pillar coral’]

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

Чтобы избежать путаницы с круглыми скобками, можно создать переменную:

coral = (‘blue coral’, ‘staghorn coral’, ‘pillar coral’)
list(coral)

Строки тоже можно преобразовывать в списки:

Заключение

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

Преобразование типов данных в Python 3

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

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

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

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

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

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

float(57)

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

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

f = 57 print(float(f))

Используя функцию float() , мы можем преобразовывать целые числа в числа с плавающей запятой.

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

Python также имеет встроенную функцию для преобразования чисел с плавающей запятой в целые числа: int() .

Функция int() работает аналогично функции float() . Чтобы преобразовать десятичную дробь в целое число, вы можете добавить его внутрь скобок:

int(390.8)

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

Эту функцию можно использовать и с переменными. Давайте объявим b равным 125.0, а c — равным 390.8, а затем применим к переменным функцию int() :

b = 125.0 c = 390.8 print(int(b)) print(int(c))
125 390

При преобразовании чисел с плавающей запятой в целые числа с помощью функции int() Python отсекает все, что идет после запятой. Мы можем ожидать, что 390,8 округлится до 391, но с применением только лишь функции int() этого не произойдет.

Преобразование чисел путем деления

В Python 3 при делении одного целого числа на другое целое число результат преобразуется в число с плавающей запятой. То есть, если разделить 5 на 2, в Python 3 вы получите число с плавающей запятой:

a = 5 / 2 print(a)

В Python 2, так как вы имели дело с двумя целыми числами, вы получите ответ в виде целого числа: 5 / 2 = 2. Прочтите «Python 2 vs Python 3: Практические соображения» для получения дополнительной информации о различиях между Python 2 и Python 3.

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

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

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

Числа в строки можно преобразовать с помощью метода str() . Мы передаем число или переменную в скобки метода, а на выходе получаем строковое значение.

Давайте сначала рассмотрим преобразование целых чисел. Чтобы преобразовать целое число 12 в строку, передадим его в метод str() :

str(12)

При запуске str(12) в интерактивной оболочке Python (чтобы войти в оболочку, введите python в окне терминала) вы получите следующий вывод:

Кавычки вокруг числа 12 означают, что оно теперь является строковым значением, а не целым числом.

Практический смысл преобразования чисел в строки становится понятнее, когда вы работаете с переменными. Допустим, мы хотим отслеживать ежедневный прогресс программирования пользователя. Для этого мы вводим, сколько строк кода он пишет за раз. Мы хотели бы давать обратную связь пользователю. Чтобы составить предложение, будем выводить одновременно и строковые, и целочисленные значения:

user = "Sammy" lines = 50 print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")

Когда мы запускаем этот код, мы получаем следующую ошибку:

TypeError: 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.")

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

Congratulations, Sammy! You just wrote 50 lines of code.

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

print(str(421.034)) f = 5524.53 print(str(f))
'421.034' '5524.53'

Чтобы убедиться, что все правильно, мы можем объединить в выводе преобразованное число и строковые значения:

f = 5524.53 print("Sammy has " + str(f) + " points.")
Sammy has 5524.53 points.

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

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

Если в вашей строке нет десятичных знаков, вы, скорее всего, захотите преобразовать ее в целое число с помощью метода int() .

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

lines_yesterday = "50" lines_today = "108" lines_more = lines_today - lines_yesterday print(lines_more)
TypeError: 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)

Переменная lines_more автоматически является целым числом, и в этом примере она равна числовому значению 58.

В приведенном выше примере мы также можем преобразовать строчные значения в числа с плавающей запятой, используя метод float() вместо метода int() . В этом случае вместо 58 мы получим число с плавающей запятой — 58.0. Пользователь Сэмми зарабатывает очки в дробных числах:

total_points = "5524.53" new_points = "45.30" new_total_points = total_points + new_points print(new_total_points)
5524.5345.30

В этом случае использование операнда «+» с двумя строками является допустимой операцией. Но эта операция объединяет две строки, а не складывает два числовых значения вместе. В результате наш output выглядит необычно, поскольку это просто два значения рядом друг с другом.

Перед выполнением любых математических операций нам нужно преобразовать эти строки в числа с плавающей запятой с помощью метода float() :

total_points = "5524.53" new_points = "45.30" new_total_points = float(total_points) + float(new_points) print(new_total_points)
5569.83

Теперь, когда мы преобразовали две строки в числа с плавающей запятой, мы получаем ожидаемый результат: сумму чисел 45.30 и 5524.53.

Если мы попытаемся при помощи метода int() конвертировать строку, представляющую собой десятичную дробь, в целое число, мы получим ошибку:

f = "54.23" print(int(f))
ValueError: invalid literal for int() with base 10: '54.23'

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

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

Вы можете использовать методы list() и tuple() для преобразования переданных им значений в тип данных списка и кортежа соответственно. В Python:

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

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

Начнем с преобразования списка в кортеж. Поскольку кортеж — это неизменяемый тип данных, такое преобразование может способствовать существенной оптимизации наших программ. Метод tuple() возвращает «кортежную» версию переданного ему значения.

print(tuple(['pull request', 'open source', 'repository', 'branch']))
('pull request', 'open source', 'repository', 'branch')

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

Давайте используем tuple() с переменной, представляющей список:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures))
('shark', 'cuttlefish', 'squid', 'mantis shrimp')

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

Мы можем преобразовать в кортеж не только список, но и любой итерируемый тип, включая строки:

print(tuple('Sammy'))
('S', 'a', 'm', 'm', 'y')

Строки можно преобразовывать в кортежи с помощью метода tuple() , потому что они итерируемые (их можно перебирать). Но с типами данных, которые не являются итерируемыми (пример — целые числа и числа с плавающей запятой), мы получим ошибку:

print(tuple(5000))
TypeError: 'int' object is not iterable

Можно преобразовать целое число в строку, а затем в кортеж: tuple(str(5000)) . Но лучше выбрать читаемый код, а не сложные преобразования.

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

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

Давайте преобразуем кортеж в список. Будьте внимательны со скобками: одна пара для кортежа, вторая — для метода list() , а третья — для метода print() :

print(list(('blue coral', 'staghorn coral', 'pillar coral')))
['blue coral', 'staghorn coral', 'pillar coral']

Квадратные скобки сигнализируют о том, что кортеж, переданный в метод list() , преобразован в список.

Чтобы сделать код более читабельным, мы можем ввести переменную и удалить одну из пар круглых скобок:

coral = ('blue coral', 'staghorn coral', 'pillar coral') list(coral)

Если мы выведем list(coral) , мы получим тот же результат, что и выше.

В список можно преобразовать не только кортеж, но и строку:

print(list('shark'))
['s', 'h', 'a', 'r', 'k']

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *