logo

Python | Convertint totes les cadenes de la llista en nombres enters

Les biblioteques de Python faciliten la interconversió entre tipus de dades amb força facilitat. Però el problema de convertir tota la llista de cadenes en nombres enters és força comú en el domini del desenvolupament. Parlem d'algunes maneres de resoldre aquest problema en particular.

Convertint totes les cadenes de la llista en nombres enters utilitzant eval()

Funció eval() de Python analitzeu l'argument de l'expressió i avalueu-lo com una expressió de Python i executa Python expression(codi), Si l'expressió és una representació int, Python converteix l'argument en un enter.



Python 3








lis>=> [>'1'>,>'-4'>,>'3'>,>'-6'>,>'7'>]> res>=> [>eval>(i)>for> i>in> lis]> print>(>'Modified list is: '>, res)>

>

>

git afegir-ho tot

Sortida:

Modified list is: [1, -4, 3, -6, 7]>

Convertint totes les cadenes de la llista a enters Mètode Naive

Aquest és el mètode més genèric que afecta qualsevol programador mentre realitza aquest tipus d'operacions. Només cal fer un bucle per tota la llista i convertir cada cadena de la llista a int mitjançant el tipus de llançament.

Python 3




test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # using loop> for> i>in> range>(>0>,>len>(test_list)):> >test_list[i]>=> int>(test_list[i])> # Printing modified list> print>(>'Modified list is : '> +> str>(test_list))>

>

>

Sortida:

Modified list is: [1, 4, 3, 6, 7]>

Convertint totes les cadenes de la llista en nombres enters comprensió de llista

Aquesta és només una mena de rèplica del mètode anterior, acabada d'implementar mitjançant la comprensió de llistes, una mena d'abreviatura que un desenvolupador sempre busca. Estalvia el temps i la complexitat de codificar una solució.

Python 3




test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # using list comprehension to> # perform conversion> test_list>=> [>int>(i)>for> i>in> test_list]> > # Printing modified list> print> (>'Modified list is : '> +> str>(test_list))>

>

>

Sortida:

Modified list is : [1, 4, 3, 6, 7]>

Convertint totes les cadenes de la llista en nombres enters mapa ()

Aquest és el mètode més elegant, pitònic i recomanat per realitzar aquesta tasca en particular. Aquesta funció està feta exclusivament per a aquest tipus de tasques i s'ha d'utilitzar per realitzar-les.

Python 3




test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # using map() to> # perform conversion> test_list>=> list>(>map>(>int>, test_list))> # Printing modified list> print>(>'Modified list is : '> +> str>(test_list))>

>

>

Sortida:

Modified list is : [1, 4, 3, 6, 7]>

Conversió de totes les cadenes de la llista en nombres enters Llista de cadenes amb representacions d'enteres mixtes

Aquí, primer convertirem cada cadena en un flotant i després la convertirem en un enter mitjançant la funció round(), en cas contrari, generarà error.

Python 3




lis>=> [>'1.1'>,>'4'>,>'3.5'>,>'6.7'>,>'7.2'>]> res>=> [>round>(>float>(i))>for> i>in> lis]> print>(>'Modified list is: '>, res)>

>

>

Sortida:

Modified list is: [1, 4, 4, 7, 7]>

Conversió de totes les cadenes de la llista en nombres enters Utilitzant la funció ast.literal_eval() del mòdul ast

Un altre enfocament que es pot utilitzar per convertir una llista de cadenes en una llista d'enters és utilitzar la funció ast.literal_eval() del mòdul ast. Aquesta funció us permet avaluar una cadena com a literal de Python, el que significa que pot analitzar i avaluar cadenes que contenen expressions de Python, com ara números, llistes, diccionaris, etc.

Aquí teniu un exemple de com utilitzar ast.literal_eval() per convertir una llista de cadenes en una llista d'enters:

Python 3




import> ast> # Initialize list of strings> test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> # Convert strings to integers using ast.literal_eval()> test_list>=> [ast.literal_eval(s)>for> s>in> test_list]> # Print resulting list> print>(>'Modified list:'>, test_list)> #This code is contributed by Edula Vinay Kumar Reddy>

>

>

Sortida

Modified list: [1, 4, 3, 6, 7]>

La complexitat temporal d'utilitzar la funció ast.literal_eval() del mòdul ast per convertir una llista de cadenes en una llista d'enters és O(n), on n és la longitud de la llista. Això vol dir que el temps necessari per executar aquest enfocament és directament proporcional a la mida de la llista d'entrada.

En termes de complexitat espacial, aquest enfocament té una complexitat espacial de O(n), perquè crea una nova llista de nombres enters de la mateixa mida que la llista d'entrada.

Convertint totes les cadenes de la llista a nombres enters mitjançant la funció numpy.array().

  1. Definiu una llista de cadenes
  2. Converteix la llista en una matriu numpy de tipus int utilitzant la funció numpy.array().
  3. Torneu a convertir la matriu numpy en una llista utilitzant funció list().
  4. Imprimeix la llista modificada

Python 3




import> numpy as np> > # Define list of strings> my_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> > # Convert list to numpy array of type int> my_array>=> np.array(my_list, dtype>=>int>)> > # Convert numpy array back to list> modified_list>=> list>(my_array)> > # Print modified list> print>(>'Modified list is: '>, modified_list)>

>

>

Sortida:

Modified list is: [1, 4, 3, 6, 7]>

Complexitat temporal: la complexitat temporal d'aquest enfocament és O(n), on n és la longitud de la llista. La funció numpy.array() triga O(n) temps a crear una nova matriu, i la funció list() triga O(n) temps a convertir la matriu de nou en una llista.

Complexitat espacial: la complexitat espacial d'aquest enfocament és O(n), perquè crea una nova matriu numpy de tipus int que té la mateixa mida que la llista d'entrada.

Enfocament: utilitzant la funció json.loads():

Algorisme:

  1. Creeu una llista de cadenes test_list amb els valors ['1', '4', '3', '6', '7']
  2. Utilitzeu el mètode join() per unir les cadenes de test_list juntament amb comes, donant com a resultat la cadena '1,4,3,6,7'
  3. Afegiu claudàtors al voltant de la cadena resultant, donant lloc a la cadena '[1,4,3,6,7]'
    Utilitzeu el mètode loads() de la biblioteca json per analitzar la cadena com a matriu JSON, donant lloc a la llista [1, 4, 3, 6, 7]
  4. Assigna la llista resultant a new_list
  5. Imprimeix la cadena La llista modificada és : seguida de la representació de cadena de new_list

Python 3




import> json> test_list>=> [>'1'>,>'4'>,>'3'>,>'6'>,>'7'>]> new_list>=> json.loads(>'['> +> ','>.join(test_list)>+> ']'>)> print>(>'Modified list is : '> +> str>(new_list))> #This code is contributed by Vinay pinjala>

>

>

Sortida

Modified list is : [1, 4, 3, 6, 7]>

La complexitat temporal: O(n), on n és la longitud de llista_test. Això és degut a que el mètode join() triga O(n) temps a concatenar les cadenes, i el mètode loads() triga O(n) temps a analitzar la cadena resultant.

La complexitat espacial: O(n), ja que la llista resultant ocupa O(n) espai a la memòria.

Convertint totes les cadenes de la llista en nombres enters mitjançant el mòdul re

algorisme pas a pas per a l'enfocament d'expressió regular per extreure valors numèrics d'una llista de cadenes

cadena a caràcter java
  1. Definiu una llista d'entrada de cadenes.
  2. Definiu un patró d'expressió regular per fer coincidir els valors numèrics de les cadenes.
  3. Inicialitzeu una llista buida per emmagatzemar els valors numèrics convertits.
  4. Itera sobre cada cadena de la llista d'entrada.
  5. Utilitzeu el patró d'expressió regular per cercar un valor numèric a la cadena.
  6. Si es troba una coincidència, extreu la subcadena coincident i convertiu-la en flotant.
  7. Afegiu el valor convertit a la llista de sortida.
  8. Un cop s'hagin processat totes les cadenes de la llista d'entrada, retorneu la llista de sortida.

Python 3




import> re> # Define the input list> lis>=> [>'1'>,>'-4'>,>'3'>,>'-6'>,>'7'>]> # Define a regular expression pattern to match numerical values> pattern>=> re.>compile>(r>'-?d+(?:.d+)?'>)> # Initialize an empty list to store converted values> res>=> []> # Iterate over each string in the input list> for> s>in> lis:> ># Use the pattern to search for a numerical value in the string> >match>=> pattern.search(s)> ># If a match is found, extract the matched substring and convert it to a float> >if> match>is> not> None>:> >res.append(>int>(match.group()))> # Print the modified list of converted values> print>(>'Modified list is: '>, res)>

>

>

Sortida

Modified list is: [1, -4, 3, -6, 7]>

Complexitat temporal: La complexitat temporal d'aquest enfocament és O(nm), on n és el nombre de cadenes de la llista d'entrada i m és la longitud màxima de qualsevol cadena de la llista. El patró d'expressió regular s'ha d'aplicar a cada cadena de la llista, que triga O(m) temps en el pitjor dels casos. Per tant, la complexitat global del temps és O(nm).
Complexitat de l'espai auxiliar: La complexitat espacial auxiliar d'aquest enfocament és O(k), on k és el nombre de valors numèrics a la llista d'entrada. Hem d'emmagatzemar cada valor numèric convertit a la llista de sortida, que requereix espai O(k). A més, hem d'emmagatzemar un objecte d'expressió regular, que requereix espai constant. Per tant, la complexitat total de l'espai auxiliar és O(k).