Curso
Conversão de tipo de dados Python: Um guia com exemplos
Todo valor em Python tem um tipo de dados. Os tipos de dados são uma classificação de dados que informa ao compilador ou ao interpretador como você deseja usar os dados. O tipo define as operações que podem ser feitas nos dados e a estrutura na qual você deseja que os dados sejam armazenados. Na ciência de dados, muitas vezes você precisará alterar o tipo de seus dados para facilitar o uso e o trabalho com eles.
O Python tem muitos tipos de dados. Você já deve ter visto e trabalhado com alguns deles. Você tem números inteiros e float para lidar com valores numéricos, booleanos (bool
) para lidar com valores verdadeiro/falso e strings para trabalhar com caracteres alfanuméricos. Você pode usar listas, tuplas, dicionários e conjuntos, que são estruturas de dados nas quais é possível armazenar uma coleção de valores. Para saber mais sobre eles, confira o curso Tipos de dados para ciência de dados do DataCamp.
Para executar facilmente todos os exemplos de código deste tutorial, você pode criar gratuitamente uma pasta de trabalho do DataLab que tenha o Python pré-instalado e contenha todos os exemplos de código. Para praticar mais a conversão de tipos em Python, confira este exercício prático do DataCamp.
Verificação de tipos de dados em Python
Antes de converter os tipos de dados, é útil que você os verifique. O Python oferece duas funções principais:
type()
: Retorna o tipo de uma variável.isinstance()
: Verifica se uma variável pertence a um determinado tipo.
a = 5.5
print(type(a)) # Output: <class 'float'>
print(isinstance(a, int)) # Output: False
print(isinstance(a, float)) # Output: True
Conversão de tipo de dados implícita e explícita do Python
A conversão de dados em Python pode ocorrer de duas maneiras: ou você diz explicitamente ao compilador para converter um tipo de dados em algum outro tipo, ou o compilador entende isso por si só e faz isso para você. No primeiro caso, você está realizando uma conversão explícita de tipo de dados, enquanto que, no segundo, você está realizando uma conversão implícita de tipo de dados.
Conversão implícita de tipos de dados em Python
A conversão implícita ou coerção é quando a conversão do tipo de dados ocorre durante a compilação ou durante o tempo de execução e é tratada diretamente pelo Python para você. Vamos ver um exemplo:
a_int = 1
b_float = 1.0
c_sum = a_int + b_float
print(c_sum)
print(type(c_sum))
2.0
<class 'float'>
Dica: Você pode usar a função type()
em Python para verificar o tipo de dados de um objeto.
Aprenda Python do zero
No exemplo, um valor inteiro a_int
foi adicionado a um valor float b_float
e o resultado foi automaticamente convertido em um valor float c_sum
sem que você precisasse informar ao compilador. Essa é a conversão implícita de dados.
Por que o valor float não foi convertido em um número inteiro?
Isso se deve a um conceito mais amplo de promoção de tipos na ciência da computação. Simplificando, esse é um mecanismo de defesa do compilador que permite que você realize operações sempre que possível, convertendo seus dados em um supertipo diferente sem perder informações.
Isso significa que a conversão de float para inteiro não é feita porque, nesse caso, o compilador precisaria remover a parte fracionária, o que levaria a uma perda de informações.
Conversão explícita de tipos de dados em Python
A conversão explícita de tipos de dados, geralmente chamada de conversão de tipos, ocorre quando você converte deliberadamente um valor de um tipo de dados para outro. Essa abordagem oferece controle direto sobre a conversão, pois você especifica explicitamente o tipo de dados de destino no seu código. Ele é normalmente usado quando a conversão automática (implícita) fornecida pelo Python não atende aos seus requisitos.
A sintaxe para conversão explícita é:
target_data_type(expression)
Por exemplo, se quiser converter um número de ponto flutuante em um número inteiro, você escreveria:
int(3.14) # Converts 3.14 to 3
Observação: Embora as conversões explícitas sejam muito úteis, elas podem levar à perda de informações. Por exemplo, a conversão de um número de ponto flutuante em um número inteiro descartará sua parte fracionária. É importante que você entenda essas consequências para evitar resultados não intencionais em seus programas.
Vamos explorar algumas conversões explícitas de tipos de dados comumente usadas.
Estruturas de dados primitivas e não primitivas em Python
As estruturas de dados primitivas são os blocos de construção para a manipulação de dados e contêm valores de dados puros e simples. O Python tem quatro tipos de variáveis primitivas:
- Inteiros
- Flutuação
- Cordas
- Booleano
As estruturas de dados não primitivas não armazenam apenas um valor, mas sim uma coleção de valores em vários formatos. Em Python, você tem as seguintes estruturas de dados não primitivas:
- Listas
- Tuplas
- Dicionários
- Conjuntos
Você pode aprender mais sobre elas com o tutorial de estruturas de dados em Python do DataCamp .
Conversões de estruturas de dados primitivas
Conversões de números inteiros e flutuantes em Python
Os números inteiros e flutuantes são tipos de dados que lidam com números.
Para converter um número inteiro em um float, use a função float()
no Python. Da mesma forma, se quiser converter um float em um número inteiro, você pode usar a função int()
.
a_int = 3
b_int = 2
# Explicit type conversion from int to float
c_float_sum = float(a_int + b_int)
print(c_float_sum)
5.0
a_float = 3.3
b_float = 2.0
# Explicit type conversion from float to int
c_int_sum = int(a_float + b_float)
print(c_int_sum)
c_float_sum = a_float + b_float
print(c_float_sum)
5
5.3
Problemas de precisão de flutuação e o Decimal
módulo
A aritmética de ponto flutuante em Python pode levar a problemas de precisão:
print(0.1 + 0.2) # Output: 0.30000000000000004
Para evitar isso, use o módulo Decimal
:
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # Output: 0.3
Conversão de tipos de dados reais para complexos em Python
Você pode converter números inteiros em números complexos usando complex(real,imag)
. Ele requer dois números inteiros (números reais e imaginários) e converte números reais em números complexos.
real = 2
imag = 5
print(complex(real, imag))
(2+5j)
Conversão de tipo de dados Python com strings
Uma string é uma coleção de um ou mais caracteres (letras, números, símbolos). Talvez você precise converter cadeias de caracteres em números ou números em cadeias de caracteres com bastante frequência.
price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + total + "$")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-54bd76b9b4bd> in <module>()
2 price_cookie = 6
3 total = price_cake + price_cookie
----> 4 print("The total is: " + total + "$")
TypeError: Can't convert 'int' object to str implicitly
O exemplo acima fornece um TypeError
, informando que o compilador não pode converter implicitamente um valor inteiro em uma string.
O que o programa deve fazer aqui pode parecer intuitivo para você. No entanto, o compilador pode nem sempre ter certeza, por isso fornece um mecanismo com a conversão explícita de tipos para que você possa indicar claramente o que deseja. É assim que você pode converter um número inteiro em uma string em Python usando a função str()
:
price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + str(total) + "$")
The total is: 21$
Funciona da mesma forma quando você converte valores float em string.
No Python, você também pode converter cadeias de caracteres em valores inteiros e flutuantes sempre que possível. Vamos ver o que isso significa:
price_cake = '15'
price_cookie = '6'
# String concatenation
total = price_cake + price_cookie
print("The total is: " + total + "$")
# Explicit type conversion to integer
total = int(price_cake) + int(price_cookie)
print("The total is: " + str(total) + "$")
The total is: 156$
The total is: 21$
Vamos detalhar o código.
price_cake
e price_cookie
são inicialmente strings. Em seguida, você precisa encontrar o total, o que significa que primeiro eles devem ser convertidos em seus valores inteiros correspondentes. Caso contrário, o compilador assumirá que a operação que você deseja é uma concatenação de strings em vez de uma adição numérica. Em seguida, você precisa colocar esse valor na string de exibição final e, consequentemente, precisa converter o total em uma string para concatená-lo com o restante da mensagem de exibição.
Esperamos que esse exemplo ajude você a ver a importância das conversões de tipos de dados. Embora esse seja um exemplo muito pequeno de conversão de tipos de dados, você já pode ver como ele pode ser útil.
Observação: você notou o "sempre que possível" ao converter uma cadeia de caracteres em números inteiros ou float? Isso ocorre porque nem sempre é possível converter cadeias de caracteres em números e aplicar operações numéricas a elas. O compilador está ciente disso e, portanto, apresentará um erro quando você tentar fazer isso. Veja o exemplo abaixo:
price_cake = 'fifteen'
price_cookie = 'six'
total = int(price_cake) + int(price_cookie)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-25-80591b8accda> in <module>()
1 price_cake = 'fifteen'
2 price_cookie = 'six'
----> 3 total = int(price_cake) + int(price_cookie)
ValueError: invalid literal for int() with base 10: 'fifteen'
Resumo: Conversões de tipos de dados primitivos do Python
Conversão | Função | Exemplo | Saída |
---|---|---|---|
Inteiro para flutuante | float() |
float(3) |
3.0 |
Float para Integer | int() |
int(3.9) |
3 |
De string para inteiro | int() |
int('123') |
123 |
Inteiro para cadeia de caracteres | str() |
str(123) |
'123' |
Conversões de estruturas de dados não primitivas
Conversão de tipos Python para tuplas e listas
Assim como acontece com os números inteiros e flutuantes, você também pode converter listas em tuplas e tuplas em listas.
Você se lembra do que são tuplas e listas? As listas e tuplas em Python são usadas para armazenar uma coleção de itens homogêneos. A diferença entre tuplas e listas é que as tuplas são imutáveis, o que significa que, uma vez definidas, você não pode excluir, adicionar ou editar nenhum valor dentro delas.
Por que você converteria listas em tuplas?
Isso ocorre porque as tuplas são tipos de dados imutáveis e permitem uma otimização substancial dos programas que você cria.
E por que você converteria tuplas em listas?
Talvez você queira fazer alterações na tupla inicial. Assim, você pode convertê-las em listas, fazer a alteração e, em seguida, convertê-las novamente em tuplas.
Em Python, você pode usar a função tuple()
para retornar uma versão em tupla do valor passado para ela e, da mesma forma, a função list()
para converter uma tupla em uma lista:
a_tuple = ('a', 1) ,('f', 2), ('g', 3)
b_list = [1,2,3,4,5]
print(tuple(b_list))
print(list(a_tuple))
(1, 2, 3, 4, 5)
[('a', 1), ('f', 2), ('g', 3)]
Da mesma forma, veja como você pode converter uma string em uma lista ou uma tupla em Python:
dessert = 'Cake'
# Convert the characters in a string to individual items in a tuple
print(tuple(dessert))
# Convert a string into a list
dessert_list = list(dessert)
dessert_list.append('s')
print(dessert_list)
('C', 'a', 'k', 'e')
['C', 'a', 'k', 'e', 's']
Conversão de tipos Python em dicionários e conjuntos
Você pode usar a função dict()
para converter uma tupla em um dicionário e set()
para converter uma lista em um conjunto.
print(dict(a_tuple))
print(set(b_list))
{'a': 1, 'f': 2, 'g': 3}
{1, 2, 3, 4, 5}
Mais simples do que outras funções de conversão, você só precisa fornecer um nome de função para converter qualquer tipo de dado em dicionários e conjuntos.
Usando dataclasses
para dados estruturados (Python 3.7+)
Em vez de usar dicionários ou tuplas, o site dataclasses
oferece uma maneira melhor de lidar com dados estruturados.
from dataclasses import dataclass
@dataclass
class Product:
name: str
price: float
in_stock: bool
item = Product("Laptop", 799.99, True)
print(item) # Output: Product(name='Laptop', price=799.99, in_stock=True)
Resumo: Conversões de estruturas de dados não primitivas do Python
Conversão | Função | Exemplo | Saída |
---|---|---|---|
Lista para tupla | tuple() |
tuple([1, 2, 3]) |
(1, 2, 3) |
Tuple para lista | list() |
list(('a', 1)) |
['a', 1] |
String para lista | list() |
list('Cake') |
['C', 'a', 'k', 'e'] |
String para Tuple | tuple() |
tuple('Cake') |
('C', 'a', 'k', 'e') |
Tuple para dicionário | dict() |
dict((('a', 1), ('b', 2))) |
{'a': 1, 'b': 2} |
Lista para definir | set() |
set([1, 2, 3, 4, 5]) |
{1, 2, 3, 4, 5} |
Inteiros Unicode, binários, octais e hexadecimais em Python
Os sistemas numéricos referem-se ao número de símbolos ou caracteres que representam qualquer valor numérico. O sistema numérico que você normalmente usa todos os dias é chamado de decimal. No sistema decimal, você usa dez símbolos diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Com esses dez símbolos, você pode representar qualquer quantidade. Unicode, Binário, Hexadecimal e Octal referem-se a sistemas numéricos diferentes.
Você passa para a colocação do próximo dígito quando ficar sem símbolos. No sistema decimal, para representar um número maior que 9, você usa 10, o que significa uma unidade de dez e zero unidades de um. No entanto, isso é diferente em outros sistemas numéricos. Por exemplo, ao considerar um sistema binário que usa apenas dois símbolos, 0 e 1, você precisa ir para a colocação do próximo dígito quando ficar sem símbolos. Portanto, é assim que você contará em binário: 0, 1, 10, 11, 100, 101, etc.
Vamos verificar alguns dos sistemas numéricos em mais detalhes nas próximas seções.
Converter binário em decimal em Python
Os números inteiros binários são os números representados na base dois. Isso significa que, no sistema numérico binário, há apenas dois símbolos usados para representar números: 0 e 1. Ao contar de zero em binário, você fica sem símbolos mais rapidamente: 0, 1, ???
Além disso, não há mais símbolos restantes. Você não vai para o dígito 2 porque o 2 não existe em binário. Em vez disso, você usa uma combinação especial de 1s e 0s. Em um sistema binário, 1000 é igual a 8 em decimal. Em binário, você usa potências de dois, o que significa que 8 é basicamente: (1(2^3)) + (0(2^2)) + (0(2^1)) + (0(2^0))= 8. A posição do 1 e do 0 define a potência para a qual 2 deve ser elevado.
Vamos ver isso com um exemplo mais complexo para que fique mais claro:
Binary Number = 1001111
Decimal value = (1*(2^6)) + (0*(2^5)) + (0*(2^4)) + (1*(2^3)) + (1*(2^2)) + (1*(2^1)) + (1*(2^0))
= 79
Em Python, você pode simplesmente usar a função bin()
para converter de um valor decimal para o valor binário correspondente.
Da mesma forma, a função int()
converte um binário em seu valor decimal. A função int()
recebe como segundo argumento a base do número a ser convertido, que é 2 no caso de números binários.
a = 79
# Base 2(binary)
bin_a = bin(a)
print(bin_a)
print(int(bin_a, 2)) #Base 2(binary)
0b1001111
79
Converter octal em decimal em Python
Octal é outro sistema numérico com menos símbolos do que o sistema decimal convencional. É de base oito, o que significa que oito símbolos são usados para representar todas as quantidades. Eles são 0, 1, 2, 3, 4, 5, 6 e 7. Depois do 7 vem o 10, pois o 8 não existe.
Assim como você usou potências de dois em binário para determinar o valor de um número, você usará potências de 8, pois essa é a base oito.
Em um sistema binário, 10 é igual a 8 em octal. Vamos detalhar isso: (1(8^1)) + (0(8^0))= 8.
Um exemplo mais complexo:
Octal Number = 117
Decimal value = (1*(8^2)) + (1*(8^1)) + (7*(8^0))
= 79
Em Python, você pode usar a função oct()
para converter de um valor decimal para o valor octal correspondente. Como alternativa, você também pode usar a função int()
e a base correta, que é 8 para o sistema numérico octal.
a = 79
# Base 8(octal)
oct_a = oct(a)
print(oct_a)
print(int(oct_a, 8))
0o117
79
Converter hexadecimal em decimal em Python
O hexadecimal é um sistema numérico de base 16. Ao contrário do binário e do octal, ele usa seis símbolos adicionais além dos números encontrados no sistema numérico decimal.
Mas o que vem depois do 9?
Quando forem necessários símbolos adicionais além dos valores numéricos normais, serão usadas letras. Portanto, em hexadecimal, a lista total de símbolos usados é 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F.
Usando o mesmo exemplo anterior:
Hexadecimal Number = 4F
Decimal value = (4*(16^1)) + (F*(16^0))
= 79
Em Python, você pode usar a função hex()
para converter de um valor decimal para o valor hexadecimal correspondente ou a função int()
com base 16 para o sistema de números hexadecimais.
a = 79
# Base 16(hexadecimal)
hex_a = hex(a)
print(hex_a)
print(int(hex_a, 16))
0x4f
79
Converter Unicode em caractere
Python chr()
converte inteiros unicode em uma string. O Unicode é uma codificação de caracteres universalmente aceita para exibir os textos escritos de diversos idiomas.
Fornecemos vários números inteiros Unicode para a função chr()
para exibir "DATACAMP". Você também pode usar ord()
para converter um único caractere em um número inteiro Unicode.
print(
chr(68),
chr(65),
chr(84),
chr(65),
chr(67),
chr(65),
chr(77),
chr(80),
)
D A T A C A M P
Resumo: Conversões de sistemas numéricos Python
Conversão | Função | Exemplo | Saída |
---|---|---|---|
Decimal para binário | bin() |
bin(79) |
0b1001111 |
Binário para decimal | int() |
int('1001111', 2) |
79 |
Decimal para octal | oct() |
oct(79) |
0o117 |
Octal para decimal | int() |
int('117', 8) |
79 |
Decimal para hexadecimal | hex() |
hex(79) |
0x4f |
Hexadecimal para decimal | int() |
int('4F', 16) |
79 |
Unicode para caractere | chr() |
chr(68) |
'D' |
Caractere para Unicode | ord() |
ord('D') |
68 |
Você conseguiu!
Parabéns! Você aprendeu sobre conversões de tipos de dados em Python, principalmente usando métodos incorporados. Isso certamente ajudará você a trabalhar com vários tipos de dados, proporcionando mais flexibilidade ao escrever seus programas.
Temos um excelente curso sobre Python Intermediário para Ciência de Dados, no qual você pode aprender a plotar seus dados usando matplotlib e trabalhar com dicionários e o famoso DataFrame do pandas. Você também verá como controlar o fluxo do seu programa com loops. Há também um estudo de caso no final do curso, no qual você pode aplicar tudo o que aprendeu e colocar seu conhecimento em prática!
Projetos Python para todos os níveis
Perguntas frequentes
Como você converte uma lista de números inteiros em uma única cadeia de caracteres em Python?
Você pode usar o método join()
combinado com map()
para converter cada número inteiro em uma cadeia de caracteres e concatená-los.
int_list = [1, 2, 3, 4]
result = ''.join(map(str, int_list))
print(result) # Output: '1234'
O que acontece se você tentar converter uma string não numérica em um número inteiro no Python?
Será exibido o endereço ValueError
indicando que a cadeia de caracteres não é um número inteiro válido.
int('abc') # Raises ValueError: invalid literal for int() with base 10: 'abc'
Você pode converter um conjunto em uma lista em Python? Como?
Sim, você pode converter um conjunto em uma lista usando a função list()
.
a_set = {1, 2, 3}
a_list = list(a_set)
print(a_list) # Output: [1, 2, 3]
Como você converte uma cadeia de números separados por espaço em uma lista de números inteiros?
Use o método split()
para dividir a cadeia de caracteres e map()
para converter cada parte em um número inteiro.
numbers = "1 2 3 4"
int_list = list(map(int, numbers.split()))
print(int_list) # Output: [1, 2, 3, 4]
Que função você pode usar para verificar o tipo de dados de uma variável em Python?
Você pode usar a função type()
para verificar o tipo de dados de uma variável.
x = 5
print(type(x)) # Output:

Eu uso vários chapéus: Desenvolvedor de software, programador, cientista de dados, desenvolvedor de business intelligence, proprietário de produto
Aprenda mais sobre Python com estes cursos!
Curso
Introdução ao Python para desenvolvedores
Curso
Python intermediário
Tutorial
Operadores em Python
Tutorial
Programação orientada a objetos em Python (OOP): Tutorial
Tutorial
Tutorial e exemplos de funções e métodos de lista do Python
Tutorial
Tutorial de manipulação de dados categóricos de aprendizado de máquina com Python

Tutorial
Tipos de gráficos de dados e como criá-los em Python
Tutorial