Pular para o conteúdo principal

Conversão de tipo de dados Python: Um guia com exemplos

Neste tutorial de Python, você abordará a conversão implícita e explícita de tipos de dados de estruturas de dados primitivas e não primitivas com a ajuda de exemplos de código!
Actualizado 16 de fev. de 2025  · 14 min de leitura

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

Domine o Python para a ciência de dados e adquira habilidades que estão em alta.
Comece a aprender de graça

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

Aprimore suas habilidades em Python com projetos de dados do mundo real.

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: 

Sejal Jaiswal's photo
Author
Sejal Jaiswal
LinkedIn

Eu uso vários chapéus: Desenvolvedor de software, programador, cientista de dados, desenvolvedor de business intelligence, proprietário de produto

Temas

Aprenda mais sobre Python com estes cursos!

Certificação disponível

Curso

Introdução ao Python

4 hr
6M
Domine os fundamentos da análise de dados com Python em apenas quatro horas. Neste curso on-line, você conhecerá a interface Python e explorará os pacotes populares.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

Tutorial

Operadores em Python

Este tutorial aborda os diferentes tipos de operadores em Python, sobrecarga de operadores, precedência e associatividade.
Théo Vanderheyden's photo

Théo Vanderheyden

9 min

Tutorial

Programação orientada a objetos em Python (OOP): Tutorial

Aborde os fundamentos da programação orientada a objetos (OOP) em Python: explore classes, objetos, métodos de instância, atributos e muito mais!
Théo Vanderheyden's photo

Théo Vanderheyden

12 min

Tutorial

Tutorial e exemplos de funções e métodos de lista do Python

Saiba mais sobre as funções e os métodos da Lista do Python. Siga exemplos de código para list() e outras funções e métodos Python agora!
Abid Ali Awan's photo

Abid Ali Awan

7 min

Tutorial

Tutorial de manipulação de dados categóricos de aprendizado de máquina com Python

Aprenda os truques comuns para lidar com dados categóricos e pré-processá-los para criar modelos de aprendizado de máquina!
Moez Ali's photo

Moez Ali

14 min

Tutorial

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

Explore vários tipos de gráficos de dados, desde os mais comuns até os avançados e não convencionais, o que eles mostram, quando usá-los, quando evitá-los e como criá-los e personalizá-los em Python.
Elena Kosourova's photo

Elena Kosourova

15 min

Tutorial

Tutorial de docstrings em Python

Saiba mais sobre os Docstrings do Python. Encontre diferentes exemplos e tipos de formatos de docstrings para Sphinx, Numpy e Pydoc.
Aditya Sharma's photo

Aditya Sharma

15 min

Ver maisVer mais