Interkonvertering mellan datatyper underlättas av python-bibliotek ganska enkelt. Men problemet med att konvertera hela listan med strängar till heltal är ganska vanligt i utvecklingsdomänen. Låt oss diskutera några sätt att lösa detta specifika problem.
Konvertera alla strängar i listan till heltal med hjälp av eval()
Python eval() funktion analysera uttrycksargumentet och utvärdera det som ett pythonuttryck och kör Python expression(code). Om uttrycket är en int-representation konverterar Python argumentet till ett heltal.
Python3
lis> => [> '1'> ,> '-4'> ,> '3'> ,> '-6'> ,> '7'> ]> res> => [> eval> (i)> for> i> in> lis]> print> (> 'Modified list is: '> , res)> |
>
>
java sorteringslista
Produktion:
Modified list is: [1, -4, 3, -6, 7]>
Konvertera alla strängar i listan till heltal Naiv metod
Detta är den mest generiska metoden som drabbar alla programmerare när de utför denna typ av operation. Bara att gå över hela listan och konvertera varje sträng i listan till int efter typ casting.
Python3
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))> |
>
>
Produktion:
Modified list is: [1, 4, 3, 6, 7]>
Konvertera alla strängar i listan till heltal med hjälp av listförståelse
Detta är bara en sorts replika av metoden ovan, precis implementerad med hjälp av listförståelse, ett slags stenografi som en utvecklare alltid letar efter. Det sparar tid och komplexitet för att koda en lösning.
Python3
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))> |
>
>
Produktion:
Modified list is : [1, 4, 3, 6, 7]>
Konvertera alla strängar i listan till heltal med hjälp av Karta()
Detta är den mest eleganta, pytoniska och rekommenderade metoden för att utföra just denna uppgift. Den här funktionen är exklusivt gjord för denna typ av uppgifter och bör användas för att utföra dem.
Python3
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))> |
>
>
Produktion:
Modified list is : [1, 4, 3, 6, 7]>
Konvertera alla strängar i listan till heltal Lista över strängar med blandade heltalsrepresentationer
Här kommer vi först att konvertera varje sträng till en float först och sedan kommer vi att konvertera den till ett heltal genom att använda funktionen round(), annars kommer det att ge fel.
Python3
lis> => [> '1.1'> ,> '4'> ,> '3.5'> ,> '6.7'> ,> '7.2'> ]> res> => [> round> (> float> (i))> for> i> in> lis]> print> (> 'Modified list is: '> , res)> |
>
>
Produktion:
Modified list is: [1, 4, 4, 7, 7]>
Konvertera alla strängar i listan till heltal med funktionen ast.literal_eval() från ast-modulen
Ett annat tillvägagångssätt som kan användas för att konvertera en lista med strängar till en lista med heltal är att använda funktionen ast.literal_eval() från ast-modulen. Den här funktionen låter dig utvärdera en sträng som en Python-literal, vilket innebär att den kan analysera och utvärdera strängar som innehåller Python-uttryck, som siffror, listor, ordböcker, etc.
Här är ett exempel på hur man använder ast.literal_eval() för att konvertera en lista med strängar till en lista med heltal:
Python3
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> |
>
>Produktion
Modified list: [1, 4, 3, 6, 7]>
Tidskomplexiteten för att använda funktionen ast.literal_eval() från ast-modulen för att konvertera en lista med strängar till en lista med heltal är O(n), där n är längden på listan. Detta innebär att tiden som krävs för att utföra detta tillvägagångssätt är direkt proportionell mot storleken på indatalistan.
När det gäller rymdkomplexitet har detta tillvägagångssätt en rymdkomplexitet på O(n), eftersom det skapar en ny lista med heltal som har samma storlek som indatalistan.
Konvertera alla strängar i listan till heltal med funktionen numpy.array().
- Definiera en lista med strängar
- Konvertera listan till en numpy-array av typen int med hjälp av numpy.array()-funktionen
- Konvertera numpy-arrayen tillbaka till en lista med list() funktion
- Skriv ut den ändrade listan
Python3
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)> |
>
>
Produktion:
Modified list is: [1, 4, 3, 6, 7]>
Tidskomplexitet: Tidskomplexiteten för detta tillvägagångssätt är O(n), där n är listans längd. Funktionen numpy.array() tar O(n) tid att skapa en ny array, och list()-funktionen tar O(n) tid att konvertera arrayen tillbaka till en lista.
Rymdkomplexitet: Rymdkomplexiteten för detta tillvägagångssätt är O(n), eftersom det skapar en ny numpy array av typen int som har samma storlek som inmatningslistan.
Tillvägagångssätt: Använda funktionen json.loads():
Algoritm:
- Skapa en lista med strängar test_list med värdena ['1', '4', '3', '6', '7']
- Använd metoden join() för att sammanfoga strängarna i test_list tillsammans med kommatecken, vilket resulterar i strängen '1,4,3,6,7'
- Lägg till hakparenteser runt den resulterande strängen, vilket resulterar i strängen '[1,4,3,6,7]'
Använd metoden loads() från json-biblioteket för att analysera strängen som en JSON-array, vilket resulterar i listan [1, 4, 3, 6, 7] - Tilldela den resulterande listan till new_list
- Skriv ut strängen Modifierad lista är : följt av strängrepresentationen av new_list
Python3
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> |
>
>Produktion
Modified list is : [1, 4, 3, 6, 7]>
Tidskomplexiteten: O(n), där n är längden på test_list. Detta beror på att metoden join() tar O(n) tid att sammanfoga strängarna, och metoden loads() tar O(n) tid att analysera den resulterande strängen.
Rymdkomplexiteten: O(n), eftersom den resulterande listan tar upp O(n) utrymme i minnet.
Konvertera alla strängar i listan till heltal med hjälp av re-modulen
steg-för-steg-algoritm för det reguljära uttryckssättet för att extrahera numeriska värden från en lista med strängar
vilket år uppfanns datorn
- Definiera en inmatningslista med strängar.
- Definiera ett reguljärt uttrycksmönster för att matcha numeriska värden i strängarna.
- Initiera en tom lista för att lagra de konverterade numeriska värdena.
- Iterera över varje sträng i inmatningslistan.
- Använd det reguljära uttrycksmönstret för att söka efter ett numeriskt värde i strängen.
- Om en matchning hittas, extrahera den matchade delsträngen och konvertera den till en float.
- Lägg till det konverterade värdet till utdatalistan.
- När alla strängar i inmatningslistan har bearbetats returnerar du utdatalistan.
Python3
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)> |
>
>Produktion
Modified list is: [1, -4, 3, -6, 7]>
Tidskomplexitet: Tidskomplexiteten för detta tillvägagångssätt är O(nm), där n är antalet strängar i inmatningslistan och m är den maximala längden på en sträng i listan. Det reguljära uttrycksmönstret måste appliceras på varje sträng i listan, vilket tar O(m) tid i värsta fall. Därför är den totala tidskomplexiteten O(nm).
Hjälputrymmes komplexitet: Hjälputrymmeskomplexiteten för detta tillvägagångssätt är O(k), där k är antalet numeriska värden i inmatningslistan. Vi måste lagra varje konverterat numeriskt värde i utdatalistan, vilket kräver O(k) utrymme. Dessutom måste vi lagra ett reguljärt uttrycksobjekt, vilket kräver konstant utrymme. Därför är den totala hjälputrymmeskomplexiteten O(k).