logo

Arreglar el objeto 'Int' no es subscriptible en Python

En este artículo, estudiaremos cómo arreglar el objeto 'int' que no tiene subíndice en Python. Pero antes de eso, comprendamos por qué ocurre y qué significa.

¿Qué es el error de objeto 'Int' que no se puede suscribir?

El error El objeto 'int' no se puede subscribir ocurre cuando intenta utilizar la indexación o la división en un entero , un tipo de datos que no admite estas operaciones.



Como conocemos el número entero en Pitón es un tipo de datos que representa un número entero. A diferencia de las listas o diccionarios, los números enteros no contienen una secuencia de elementos y, por lo tanto, no admiten la indexación ni la división.
Por ejemplo, si x = 42 (un número entero), e intentamos hacer algo como x[0], es un intento de acceder al primer elemento de x como si x fuera un lista o un tupla . Dado que los números enteros no contienen una colección de elementos, esta operación no es válida y obtiene un TypeError: el objeto 'int' no tiene subíndices.

Ejemplo

Python3








# Example causing 'int' object is not subscriptable error> x>=> 42> # Attempting to use subscript notation on an integer> print>(x[>0>])>

>

>

Producción:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 4, in   print(number[0]) TypeError: 'int' object is not subscriptable>

¿Por qué se produce el error 'Int' del objeto no subscriptible?

El error del objeto 'Int' no tiene subíndice en Python surge debido a características específicas de los objetos enteros (int). Estas son las razones por las que se produce este error:

  • Inmutabilidad de números enteros
  • El tipo de retorno de función no coincide
  • Sin estructura iterable

Inmutabilidad de números enteros

Como sabemos, los enteros en Python son inmutables, lo que significa que sus valores no se pueden cambiar después de la creación y las operaciones de subíndice o indexación son aplicables a secuencias mutables (por ejemplo, listas, instrumentos de cuerda ), donde se puede acceder a los elementos o modificarlos mediante índices.

java lambda

Dado que los números enteros no son secuencias mutables, intentar utilizar corchetes para subíndices de resultados en el objeto 'Int' no es un error de subíndice.

Python3




# Example triggering 'Int' object is not subscriptable error> num>=> 42> value>=> num[>0>]># Error: 'Int' object is not subscriptable>

>

>

Producción:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   value = num[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable>

El tipo de retorno de función no coincide

En esta función se espera que devuelva una lista o tupla cuando la condición es Falsa, como lo indica la rama else.

Sin embargo, en la rama else, la función devuelve un número entero en lugar de una lista o tupla, lo que da como resultado el error 'Int' El objeto no es subscriptable

Python3




def> get_data(condition):> >'''> >This function is expected to return a list or tuple,> >but under certain conditions, it returns an integer.> >'''> >if> condition:> >return> [>1>,>2>,>3>]># Returns a list> >else>:> >return> 42> # Returns an integer> > # Function call with a condition that leads to an integer being returned> result>=> get_data(>False>)> > # Attempting to index the result, which is an integer in this case> first_element>=> result[>0>]>

>

>

Producción:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 15, in   first_element = result[0] TypeError: 'int' object is not subscriptable>

Sin estructura iterable

Como sabemos, los números enteros carecen de la estructura iterable necesaria para los subíndices. Los objetos iterables, como listas o cadenas, tienen una secuencia bien definida de elementos a los que se puede acceder mediante índices.

Intentar utilizar corchetes en un número entero implica tratarlo como si tuviera propiedades iterables, lo que da como resultado que el objeto 'Int' no sea un error con subíndice.

Python3




# Example demonstrating misinterpretation of syntax> integer_value>=> 123> value>=> integer_value[>0>]>

fecha local

>

>

Producción:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   value = integer_value[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable>

Resolver el objeto 'Int' no se puede subscribir en Python

  • Utilice cadenas o listas en lugar de números enteros
  • Verificar tipos de variables
  • Revisar la lógica del código:

Estudiémoslos en detalle.

Utilice cadenas o listas en lugar de números enteros

En Python, la notación de subíndices se aplica a cadenas y listas. Entonces podemos convertir un número entero en una cadena o lista antes de usar la notación de subíndice.

Python3




# Converting integer to string and using subscript notation> number>=> 42> number_str>=> str>(number)> print>(number_str[>0>])>

>

>

Producción

4>

Verificar tipos de variables

Necesitamos asegurarnos de que la variable que estamos usando sea del tipo esperado que queremos que sea. Si se supone que es una secuencia (cadena o lista), asegúrese de que no se le asigne por error un valor entero.

Python3


árbol binario transversal de pedidos por correo



# Checking variable type before using subscript notation> number>=> 42> if> isinstance>(number, (>str>,>list>)):> >print>(number[>0>])> else>:> >print>(> >f>'Error: Variable type '{type(number).__name__}' is not subscriptable.'>)>

>

>

Producción

Error: Variable type 'int' is not subscriptable.>

Revisar la lógica del código

Examine la lógica de su código para determinar si la notación de subíndices es realmente necesaria. De lo contrario, revise el código para evitar subíndices de números enteros.

Python3




# Reviewing code logic to avoid subscripting integers> number>=> 42> number_str>=> str>(number)> print>(number_str[>0>])>

>

>

Producción

4>

Conclusión

De la información anterior podemos decir Error de tecleado : El error de objeto 'int' no tiene subíndice en Python generalmente ocurre debido a una falta de coincidencia de tipos donde un número entero se trata erróneamente como un objeto con subíndice, como una lista o tupla. Entonces, para evitar esto, es crucial verificar constantemente los tipos de datos, especialmente cuando se trata de estructuras de datos dinámicas o complejas.