logo

Fixar l'objecte 'Int' no és subscriptible a Python

En aquest article, estudiarem com arreglar l'objecte 'int' que no és subscriptible a Python. Però abans d'això, entenem per què es produeix i què significa.

Què és l'objecte 'Int' no és un error subscriptible?

L'error L'objecte 'int' no és subscriptible es produeix quan intenteu utilitzar la indexació o el tall en un enter , un tipus de dades que no admet aquestes operacions.



Com sabem enter en Python és un tipus de dades que representa un nombre sencer. A diferència de les llistes o els diccionaris, els enters no contenen una seqüència d'elements i, per tant, no admeten la indexació ni el tall.
Per exemple, si x = 42 (un nombre enter) i intentem fer alguna cosa com x[0], és un intent d'accedir al primer element de x com si x fos un llista o a tupla . Com que els enters no contenen una col·lecció d'elements, aquesta operació no és vàlida i obteniu un TypeError: l'objecte 'int' no és subscriptible.

Exemple

Python 3








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

>

>

Sortida:

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

Per què es produeix un error de l'objecte 'Int' no subscriptible?

L'objecte 'Int' no és un error subscriptible a Python sorgeix a causa de característiques específiques dels objectes enters (int). Aquests són els motius pels quals es produeix aquest error:

  • Immutabilitat dels nombres enters
  • Tipus de retorn de funció No coincideix
  • Sense estructura iterable

Immutabilitat dels nombres enters

Com sabem que els enters en Python són immutables, és a dir, els seus valors no es poden canviar després de la creació i les operacions de subíndex o indexació són aplicables a seqüències mutables (per exemple, llistes, cordes ), on es pot accedir o modificar elements mitjançant índexs.

sql concat

Com que els nombres enters no són seqüències mutables, intentar utilitzar claudàtors per subscribir els resultats a l'objecte 'Int' no és un error subscriptible.

Python 3




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

>

>

Sortida:

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>

Tipus de retorn de funció No coincideix

En aquesta funció s'espera que retorni una llista o tupla quan la condició sigui Falsa, tal com indica la branca else.

No obstant això, a la branca else, la funció retorna un nombre enter en lloc d'una llista o una tupla que resulta en un error 'Int' Object Is Not Subscriptable

Python 3




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>]>

>

>

Sortida:

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

Sense estructura iterable

Com sabem, els enters no tenen l'estructura iterable necessària per a subíndexs. Els objectes iterables, com ara llistes o cadenes, tenen una seqüència ben definida d'elements als quals es pot accedir mitjançant índexs.

Intentar utilitzar claudàtors en un nombre sencer implica tractar-lo com si tingués propietats iterables, donant lloc a que l'objecte 'Int' no sigui un error subscriptible.

Python 3




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

>

>

Sortida:

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>

Resol l'objecte 'Int' no és subscriptible a Python

  • Utilitzeu cadenes o llistes en lloc de nombres enters
  • Comproveu els tipus de variables
  • Revisa la lògica del codi:

Estudiem-los amb detall

Utilitzeu cadenes o llistes en lloc de nombres enters

A Python, la notació de subíndex és aplicable a cadenes i llistes. Així que podem convertir un nombre enter en una cadena o llista abans d'utilitzar la notació de subíndex.

Python 3




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

>

>

Sortida

descarregar vídeos de youtube vlc
4>

Comproveu els tipus de variables

Hem d'assegurar-nos que la variable que estem utilitzant és del tipus esperat que volem que sigui. Si se suposa que és una seqüència (cadena o llista), assegureu-vos que no s'ha assignat un valor enter per error.

Python 3




# 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.'>)>

>

>

Sortida

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

Revisar la lògica del codi

Examineu la vostra lògica de codi per determinar si la notació de subíndex és realment necessària. Si no, revisa el codi per evitar subíndexs enters.

Python 3




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

>

>

Sortida

4>

Conclusió

De la informació anterior podem dir TypeError : l'objecte 'int' no és subscriptible. L'error a Python sol passar a causa d'una discrepància de tipus on un nombre enter es tracta erròniament com un objecte subscriptible com una llista o una tupla. Per tant, per evitar-ho, és crucial comprovar constantment els tipus de dades, especialment quan es tracta d'estructures de dades dinàmiques o complexes.