Saltar al contenido principal

Conversión de tipos de datos en Python: Una guía con ejemplos

En este tutorial de Python, abordarás la conversión implícita y explícita de tipos de datos de estructuras de datos primitivas y no primitivas con la ayuda de ejemplos de código.
Actualizado 16 feb 2025  · 14 min de lectura

Cada valor en Python tiene un tipo de dato. Los tipos de datos son una clasificación de los datos que indica al compilador o al intérprete cómo quieres utilizarlos. El tipo define las operaciones que se pueden hacer con los datos y la estructura en la que quieres que se almacenen. En la ciencia de datos, a menudo necesitarás cambiar el tipo de tus datos para que sea más fácil utilizarlos y trabajar con ellos.

Python tiene muchos tipos de datos. Seguro que ya has visto y trabajado con algunos de ellos. Tienes números enteros y flotantes para tratar valores numéricos, booleanos (bool) para tratar valores verdadero/falso y cadenas para trabajar con caracteres alfanuméricos. Puedes utilizar listas, tuplas, diccionarios y conjuntos, que son estructuras de datos en las que puedes almacenar una colección de valores. Para saber más sobre ellos, consulta el Curso Tipos de Datos para la Ciencia de Datos de DataCamp.

Para ejecutar fácilmente tú mismo todo el código de ejemplo de este tutorial, puedes crear gratuitamente un libro de trabajo DataLab que tenga Python preinstalado y contenga todos los ejemplos de código. Para practicar más la conversión de tipos en Python, consulta este ejercicio práctico de DataCamp.

Comprobación de tipos de datos en Python

Antes de convertir los tipos de datos, es útil comprobarlos. Python proporciona dos funciones principales:

  • type(): Devuelve el tipo de una variable.
  • isinstance(): Comprueba si una variable pertenece a un tipo determinado.
a = 5.5
print(type(a))  # Output: <class 'float'>

print(isinstance(a, int))  # Output: False
print(isinstance(a, float))  # Output: True

Conversión implícita y explícita de tipos de datos en Python

La conversión de datos en Python puede ocurrir de dos formas: o bien le dices explícitamente al compilador que convierta un tipo de datos en otro tipo, o bien el compilador lo entiende por sí mismo y lo hace por ti. En el primer caso, estás realizando una conversión explícita de tipos de datos, mientras que, en el segundo, estás realizando una conversión implícita de tipos de datos.

Conversión implícita de tipos de datos en Python

La conversión implícita o coerción se produce cuando la conversión de tipos de datos tiene lugar durante la compilación o en tiempo de ejecución y Python la gestiona directamente por ti. Veamos un ejemplo:

a_int = 1
b_float = 1.0
c_sum = a_int + b_float
print(c_sum)
print(type(c_sum))
 2.0
<class 'float'>

Consejo: Puedes utilizar la función type() en Python para comprobar el tipo de datos de un objeto.

Aprende Python desde cero

Domina Python para la ciencia de datos y adquiere habilidades muy demandadas.
Empieza a aprender gratis

En el ejemplo, se sumó un valor entero a_int a un valor flotante b_float, y el resultado se convirtió automáticamente en un valor flotante c_sum sin que tuvieras que decírselo al compilador. Esta es la conversión implícita de datos.

¿Por qué no se convirtió el valor flotante a un número entero?

Esto se debe a un concepto más amplio de la promoción de tipos en informática. En pocas palabras, se trata de un mecanismo de defensa del compilador que te permite realizar operaciones siempre que sea posible convirtiendo tus datos en un supertipo diferente sin perder información.

Eso significa que no se realiza la conversión de flotante a entero, porque entonces el compilador tendría que eliminar la parte fraccionaria, lo que provocaría una pérdida de información.

Conversión explícita de tipos de datos en Python

La conversión explícita de tipos de datos, a menudo denominada conversión de tipos, se produce cuando conviertes deliberadamente un valor de un tipo de datos a otro. Este enfoque te da un control directo sobre la conversión, ya que especificas explícitamente el tipo de datos de destino en tu código. Se suele utilizar cuando la conversión automática (implícita) que proporciona Python no satisface tus necesidades.

La sintaxis para la conversión explícita es

target_data_type(expression)

Por ejemplo, si quieres convertir un número de coma flotante en un número entero, escribirías

int(3.14)  # Converts 3.14 to 3

Nota: Aunque las conversiones explícitas son muy útiles, pueden provocar pérdidas de información. Por ejemplo, al convertir un número en coma flotante a un número entero, se descartará su parte fraccionaria. Es importante comprender estas consecuencias para evitar resultados no deseados en tus programas.

Exploremos algunas conversiones explícitas de tipos de datos de uso común.

Estructuras de datos primitivas y no primitivas en Python

Las estructuras de datos primitivas son los bloques de construcción para la manipulación de datos y contienen valores de datos puros y simples. Python tiene cuatro tipos de variables primitivas:

  • Enteros
  • Flotador
  • Cuerdas
  • Booleano

Las estructuras de datos no primitivas no almacenan sólo un valor, sino una colección de valores en diversos formatos. En Python, tienes las siguientes estructuras de datos no primitivas:

  • Listas
  • Tuplas
  • Diccionarios
  • Establece

Puedes aprender más sobre ellas con el Tutorial de Estructuras de Datos en Python de DataCamp .

Conversiones de estructuras de datos primitivas

Conversiones de enteros y flotantes en Python

Los enteros y los flotantes son tipos de datos que tratan con números.

Para convertir un entero en un flotante, utiliza la función float() en Python. Del mismo modo, si quieres convertir un flotante en un entero, puedes utilizar la función 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 precisión del flotador y el Decimal módulo

La aritmética de coma flotante en Python puede provocar problemas de precisión:

print(0.1 + 0.2)  # Output: 0.30000000000000004

Para evitarlo, utiliza el módulo Decimal:

from decimal import Decimal

print(Decimal('0.1') + Decimal('0.2'))  # Output: 0.3

Conversión de tipos de datos reales a complejos en Python

Puedes convertir números enteros en números complejos utilizando complex(real,imag). Requiere dos números enteros (real e imaginario) y convierte los números reales en números complejos.

real = 2
imag = 5
print(complex(real, imag))
(2+5j)

Conversión de tipos de datos Python con cadenas

Una cadena es una colección de uno o varios caracteres (letras, números, símbolos). Puede que necesites convertir cadenas a números o números a cadenas con bastante frecuencia.

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

El ejemplo anterior da un TypeError, informando de que el compilador no puede convertir implícitamente un valor entero en una cadena.

Lo que el programa debe hacer aquí puede parecerte intuitivo. Sin embargo, puede que el compilador no siempre esté seguro, por lo que proporciona un mecanismo con fundición de tipos explícita para que puedas indicar claramente lo que quieres. Así es como puedes convertir un número entero en una cadena en Python utilizando la función str():

price_cake = 15
price_cookie = 6
total = price_cake + price_cookie
print("The total is: " + str(total)  + "$")
The total is: 21$

Funciona igual cuando conviertes valores flotantes en valores de cadena.

En Python, también puedes convertir cadenas en valores enteros y flotantes siempre que sea posible. Veamos qué significa esto:

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$

Desglosemos el código.

price_cake y price_cookie son inicialmente cadenas. Luego, tienes que hallar el total, lo que significa que primero hay que convertirlos a sus correspondientes valores enteros. De lo contrario, el compilador asumirá que la operación que quieres es una concatenación de cadenas en lugar de una suma numérica. A continuación, tienes que poner este valor en la cadena de visualización final y, en consecuencia, tienes que convertir el total en una cadena para concatenarla con el resto del mensaje de visualización.

Esperamos que este ejemplo te ayude a ver la importancia de las conversiones de tipos de datos. Aunque éste es un ejemplo muy pequeño de conversión de tipos de datos, ya puedes ver lo útil que puede ser.

Nota: ¿te has fijado en el "siempre que sea posible" al convertir una cadena a enteros o flotantes? Esto se debe a que no siempre es posible convertir cadenas en números y aplicarles operaciones numéricas. El compilador es consciente de ello y, por tanto, te dará un error cuando intentes hacerlo. Mira el siguiente ejemplo:

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'

Resumen: Conversiones de tipos de datos primitivos en Python

Conversión Función Ejemplo Salida
De entero a flotante float() float(3) 3.0
De flotante a entero int() int(3.9) 3
Cadena a entero int() int('123') 123
De entero a cadena str() str(123) '123'

Conversiones de estructuras de datos no primitivas

Conversión de tipos Python a tuplas y listas

Al igual que con los enteros y los flotantes, también puedes convertir listas en tuplas y tuplas en listas.

¿Recuerdas qué son las tuplas y las listas? Las listas y tuplas en Python se utilizan para almacenar una colección de elementos homogéneos. La diferencia entre las tuplas y las listas es que las tuplas son inmutables, lo que significa que, una vez definidas, no puedes borrar, añadir ni editar ningún valor de su interior.

¿Por qué convertir listas en tuplas?

Esto se debe a que las tuplas son tipos de datos inmutables y permiten una optimización sustancial de los programas que creas.

¿Y por qué convertirías tuplas en listas?

Tal vez quieras hacer cambios en la tupla inicial. Así, puedes convertirlas en listas, hacer el cambio y volver a convertirlas en tuplas.

En Python, puedes utilizar la función tuple() para devolver una versión en tupla del valor que se le ha pasado, y del mismo modo la función list() para convertir una tupla en una 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)]

Del mismo modo, te explicamos cómo convertir una cadena en una lista o tupla en 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']

Conversión de tipos Python a diccionarios y conjuntos

Puedes utilizar la función dict() para convertir una tupla en un diccionario y set() para convertir una lista en un conjunto. 

print(dict(a_tuple))
print(set(b_list))
{'a': 1, 'f': 2, 'g': 3}
{1, 2, 3, 4, 5}

Más sencillo que otras funciones de conversión, sólo tienes que proporcionar un nombre de función para convertir cualquier tipo de dato en diccionarios y conjuntos.

Utilizando dataclasses para Datos Estructurados (Python 3.7+)

En lugar de utilizar diccionarios o tuplas, dataclasses proporciona una forma mejor de manejar datos estructurados.

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)

Resumen: Conversiones de estructuras de datos no primitivas de Python

Conversión Función Ejemplo Salida
Lista a tupla tuple() tuple([1, 2, 3]) (1, 2, 3)
De tupla a lista list() list(('a', 1)) ['a', 1]
Cadena a lista list() list('Cake') ['C', 'a', 'k', 'e']
Cadena a tupla tuple() tuple('Cake') ('C', 'a', 'k', 'e')
De tupla a diccionario dict() dict((('a', 1), ('b', 2))) {'a': 1, 'b': 2}
Lista para fijar set() set([1, 2, 3, 4, 5]) {1, 2, 3, 4, 5}

Enteros Unicode, Binarios, Octales y Hexadecimales en Python

Los sistemas numéricos se refieren al número de símbolos o caracteres que representan cualquier valor numérico. El sistema numérico que sueles utilizar todos los días se llama decimal. En el sistema decimal se utilizan diez símbolos diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Con estos diez símbolos, puedes representar cualquier cantidad. Unicode, Binario, Hexadecimal y Octal se refieren a sistemas numéricos diferentes.

Pasas a la siguiente colocación de dígitos cuando te quedas sin símbolos. En el sistema decimal, para representar uno mayor que 9, se utiliza 10, que significa una unidad de diez y cero unidades de uno. Sin embargo, es diferente en otros sistemas numéricos. Por ejemplo, cuando consideras un sistema binario que sólo utiliza dos símbolos, 0 y 1, necesitas pasar a la siguiente colocación de dígitos cuando se te acaban los símbolos. Así es como contarás en binario: 0, 1, 10, 11, 100, 101, etc.

Veamos con más detalle algunos de los sistemas numéricos en los siguientes apartados.

Convertir binario a decimal en Python

Los enteros binarios son los números representados con base dos. Esto significa que en el sistema numérico binario sólo se utilizan dos símbolos para representar los números: 0 y 1. Cuando cuentas desde cero en binario, te quedas sin símbolos más rápidamente: 0, 1, ???

Además, ya no quedan símbolos. No vas al dígito 2 porque el 2 no existe en binario. En su lugar, utiliza una combinación especial de 1s y 0s. En un sistema binario, 1000 es igual a 8 en decimal. En binario, se utilizan potencias de dos, lo que significa que 8 es básicamente: (1(2^3)) + (0(2^2)) + (0(2^1)) + (0(2^0))= 8. La posición del 1 y del 0 define la potencia a la que debe elevarse 2.

Veámoslo con un ejemplo más complejo para que quede 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

En Python, puedes utilizar simplemente la función bin() para convertir de un valor decimal a su correspondiente valor binario.

Del mismo modo, la función int() para convertir un valor binario a su valor decimal. La función int() toma como segundo argumento la base del número a convertir, que es 2 en el caso de los números binarios.

a = 79

# Base 2(binary)
bin_a = bin(a)
print(bin_a)
print(int(bin_a, 2)) #Base 2(binary)
0b1001111
79

Convertir octal a decimal en Python

El octal es otro sistema numérico con menos símbolos que el sistema decimal convencional. Es de base ocho, lo que significa que se utilizan ocho símbolos para representar todas las cantidades. Son 0, 1, 2, 3, 4, 5, 6 y 7. Después del 7 está el 10, ya que el 8 no existe.

Igual que en binario utilizabas potencias de dos para determinar el valor de un número, en base ocho utilizarás potencias de 8.

En un sistema binario, 10 es igual a 8 en octal. Vamos a desglosarlo: (1(8^1)) + (0(8^0))= 8.

Un ejemplo más complejo:

Octal Number = 117
Decimal value = (1*(8^2)) + (1*(8^1)) + (7*(8^0))
              = 79

En Python, puedes utilizar la función oct() para convertir de un valor decimal a su correspondiente valor octal. También puedes utilizar la función int() y la base correcta, que es 8 para el sistema numérico octal.

a = 79

# Base 8(octal)
oct_a = oct(a)
print(oct_a)
print(int(oct_a, 8))
0o117
79

Convertir hexadecimal a decimal en Python

El hexadecimal es un sistema numérico de base 16. A diferencia del binario y el octal, utiliza seis símbolos adicionales además de los números que se encuentran en el sistema numérico decimal.

Pero, ¿qué viene después del 9?

Cuando se necesiten símbolos adicionales más allá de los valores numéricos normales, se utilizarán letras. Así, en hexadecimal, la lista total de símbolos utilizados es 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F.

Utilizando el mismo ejemplo anterior:

Hexadecimal Number = 4F
Decimal value = (4*(16^1)) + (F*(16^0))
              = 79

En Python, puedes utilizar la función hex() para convertir de un valor decimal a su correspondiente valor hexadecimal, o la función int() en base 16 para el sistema numérico hexadecimal.

a = 79

# Base 16(hexadecimal)
hex_a = hex(a)
print(hex_a)
print(int(hex_a, 16))
0x4f
79

Convertir Unicode en carácter

Python chr() convierte los enteros unicode en una cadena. Unicode es una codificación de caracteres universalmente aceptada para mostrar los textos escritos de diversas lenguas.

Hemos proporcionado varios enteros Unicode a la función chr() para mostrar "DATACAMP". También puedes utilizar ord() para convertir un único carácter en un número entero 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

Resumen: Conversiones de sistemas numéricos en Python

Conversión Función Ejemplo Salida
Decimal a Binario bin() bin(79) 0b1001111
Binario a decimal int() int('1001111', 2) 79
Decimal a Octal oct() oct(79) 0o117
De octal a decimal int() int('117', 8) 79
Decimal a hexadecimal hex() hex(79) 0x4f
De hexadecimal a decimal int() int('4F', 16) 79
Unicode a Carácter chr() chr(68) 'D'
Carácter a Unicode ord() ord('D') 68

¡Lo has conseguido!

¡Enhorabuena! Has aprendido sobre las conversiones de tipos de datos en Python, principalmente utilizando métodos incorporados. Esto te ayudará sin duda a trabajar con distintos tipos de datos, proporcionándote más flexibilidad a la hora de escribir tus programas.

Tenemos un excelente curso sobre Python Intermedio para la Ciencia de Datos en el que puedes aprender a trazar tus datos utilizando matplotlib, y a trabajar con diccionarios y el famoso pandas DataFrame. También verás cómo puedes controlar el flujo de tu programa con bucles. También hay un caso práctico al final del curso en el que puedes aplicar todo lo que has aprendido y poner en práctica tus conocimientos. 

Proyectos Python para todos los niveles

Mejora tus conocimientos de Python con proyectos de datos del mundo real.

Preguntas frecuentes

¿Cómo se convierte una lista de enteros en una sola cadena en Python?

Puedes utilizar el método join() combinado con map() para convertir cada entero en una cadena y concatenarlos.

int_list = [1, 2, 3, 4]
result = ''.join(map(str, int_list))
print(result)  # Output: '1234'

¿Qué ocurre si intentas convertir una cadena no numérica en un número entero en Python?

Aparecerá un mensaje ValueError indicando que la cadena no es un número entero válido.

int('abc')  # Raises ValueError: invalid literal for int() with base 10: 'abc'

¿Puedes convertir un conjunto en una lista en Python? ¿Cómo?

Sí, puedes convertir un conjunto en una lista utilizando la función list().

a_set = {1, 2, 3}
a_list = list(a_set)
print(a_list)  # Output: [1, 2, 3]

¿Cómo se convierte una cadena de números separados por espacios en una lista de números enteros?

Utiliza el método split() para dividir la cadena y map() para convertir cada parte en un número entero.

numbers = "1 2 3 4"
int_list = list(map(int, numbers.split()))
print(int_list)  # Output: [1, 2, 3, 4]

¿Qué función puedes utilizar para comprobar el tipo de datos de una variable en Python?

Puedes utilizar la función type() para comprobar el tipo de datos de una variable.

x = 5
print(type(x))  # Output: 

Sejal Jaiswal's photo
Author
Sejal Jaiswal
LinkedIn

Llevo varios sombreros: Desarrollador de Software, Programador, Científico de Datos, Desarrollador de Inteligencia de Negocio, Propietario de Producto

Temas

¡Aprende más sobre Python con estos cursos!

curso

Introduction to Python

4 hr
6M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

tutorial

Aprendizaje automático de datos categóricos con el tutorial de Python

Aprenda los trucos más comunes para manejar datos categóricos y preprocesarlos para construir modelos de aprendizaje automático.
Moez Ali's photo

Moez Ali

28 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Programación orientada a objetos (POO) en Python: Tutorial

Aborda los fundamentos de la Programación Orientada a Objetos (POO) en Python: explora las clases, los objetos, los métodos de instancia, los atributos y ¡mucho más!
Théo Vanderheyden's photo

Théo Vanderheyden

12 min

tutorial

Tutorial Python Docstrings : Ejemplos y Formato de Cadenas Doc Pydoc, Numpy, Sphinx

Aprende sobre las Docstrings de Python. Encuentra diferentes ejemplos y tipos de formato de docstrings para Sphinx, Numpy y Pydoc.
Aditya Sharma's photo

Aditya Sharma

15 min

tutorial

Tutorial y Ejemplos de Funciones y Métodos de Listas en Python

Conozca las funciones y métodos de lista de Python. Siga ahora ejemplos de código de list() y otras funciones y métodos de Python.
Abid Ali Awan's photo

Abid Ali Awan

7 min

tutorial

Tipos de gráficos de datos y cómo crearlos en Python

Explore varios tipos de gráficos de datos, desde los más comunes hasta los más avanzados y poco convencionales, qué muestran, cuándo utilizarlos, cuándo evitarlos y cómo crearlos y personalizarlos en Python.
Elena Kosourova's photo

Elena Kosourova

21 min

Ver másVer más