Interconversie tussen gegevenstypen wordt vrij eenvoudig mogelijk gemaakt door Python-bibliotheken. Maar het probleem van het omzetten van de hele lijst met strings naar gehele getallen komt vrij vaak voor in het ontwikkelingsdomein. Laten we een paar manieren bespreken om dit specifieke probleem op te lossen.
Alle tekenreeksen in de lijst converteren naar gehele getallen met behulp van eval()
Python eval()-functie parseer het expressieargument en evalueer het als een Python-expressie en voer Python expression(code) uit. Als de expressie een int-representatie is, converteert Python het argument naar een geheel getal.
Python3
lis>=> [>'1'>,>'-4'>,>'3'>,>'-6'>,>'7'>]> res>=> [>eval>(i)>for> i>in> lis]> print>(>'Modified list is: '>, res)> |
>
>
chiranjeevi-acteur
Uitgang:
Modified list is: [1, -4, 3, -6, 7]>
Alle strings in de lijst omzetten naar gehele getallen Naïeve methode
Dit is de meest algemene methode die elke programmeur tegenkomt tijdens het uitvoeren van dit soort bewerkingen. Gewoon de hele lijst doorlopen en elke string van de lijst converteren naar int per type 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))> |
>
>
Uitgang:
Modified list is: [1, 4, 3, 6, 7]>
Alle tekenreeksen in de lijst converteren naar gehele getallen Gebruiken lijst begrip
Dit is slechts een soort replica van de bovenstaande methode, gewoon geïmplementeerd met behulp van lijstbegrip, een soort afkorting waar een ontwikkelaar altijd naar op zoek is. Het bespaart tijd en complexiteit bij het coderen van een oplossing.
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))> |
>
>
Uitgang:
Modified list is : [1, 4, 3, 6, 7]>
Alle tekenreeksen in de lijst converteren naar gehele getallen Gebruiken kaart()
Dit is de meest elegante, pythonische en aanbevolen methode om deze specifieke taak uit te voeren. Deze functie is exclusief gemaakt voor dit soort taken en moet worden gebruikt om ze uit te voeren.
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))> |
>
>
Uitgang:
Modified list is : [1, 4, 3, 6, 7]>
Alle tekenreeksen in de lijst omzetten naar gehele getallen Lijst met tekenreeksen met gemengde representaties van gehele getallen
Hier zullen we elke string eerst naar een float converteren en vervolgens naar een geheel getal converteren met behulp van de functie round(), anders zal er een fout optreden.
Python3
lis>=> [>'1.1'>,>'4'>,>'3.5'>,>'6.7'>,>'7.2'>]> res>=> [>round>(>float>(i))>for> i>in> lis]> print>(>'Modified list is: '>, res)> |
>
>
Uitgang:
Modified list is: [1, 4, 4, 7, 7]>
Alle tekenreeksen in de lijst converteren naar gehele getallen De functie ast.literal_eval() uit de ast-module gebruiken
Een andere benadering die kan worden gebruikt om een lijst met tekenreeksen naar een lijst met gehele getallen te converteren, is het gebruik van de functie ast.literal_eval() uit de ast-module. Met deze functie kunt u een tekenreeks evalueren als een letterlijke Python-tekst, wat betekent dat tekenreeksen die Python-expressies bevatten, zoals getallen, lijsten, woordenboeken, enzovoort, kunnen worden geparseerd en geëvalueerd.
Hier is een voorbeeld van hoe u ast.literal_eval() kunt gebruiken om een lijst met tekenreeksen naar een lijst met gehele getallen te converteren:
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> |
>
>Uitvoer
Modified list: [1, 4, 3, 6, 7]>
De tijdscomplexiteit van het gebruik van de functie ast.literal_eval() van de ast-module om een lijst met tekenreeksen naar een lijst met gehele getallen te converteren is O(n), waarbij n de lengte van de lijst is. Dit betekent dat de tijd die nodig is om deze aanpak uit te voeren recht evenredig is met de omvang van de invoerlijst.
In termen van ruimtecomplexiteit heeft deze benadering een ruimtecomplexiteit van O(n), omdat er een nieuwe lijst met gehele getallen ontstaat die even groot is als de invoerlijst.
Alle tekenreeksen in de lijst converteren naar gehele getallen Met behulp van de functie numpy.array().
- Definieer een lijst met tekenreeksen
- Converteer de lijst naar een numpy-array van het type int met behulp van de functie numpy.array().
- Converteer de numpy-array terug naar een lijst met behulp van lijst() functie
- Druk de gewijzigde lijst af
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)> |
>
>
Uitgang:
Modified list is: [1, 4, 3, 6, 7]>
Tijdcomplexiteit: De tijdcomplexiteit van deze benadering is O(n), waarbij n de lengte van de lijst is. De functie numpy.array() heeft O(n) tijd nodig om een nieuwe array te maken, en de functie list() heeft O(n) tijd nodig om de array weer naar een lijst te converteren.
Ruimtecomplexiteit: De ruimtecomplexiteit van deze benadering is O(n), omdat er een nieuwe numpy-array van het type int ontstaat die dezelfde grootte heeft als de invoerlijst.
Aanpak: Met behulp van de json.loads() functie:
Algoritme:
- Maak een lijst met tekenreeksen test_list met de waarden [‘1’, ‘4’, ‘3’, ‘6’, ‘7’]
- Gebruik de methode join() om de strings in test_list samen te voegen met komma's, wat resulteert in de string '1,4,3,6,7'
- Voeg vierkante haken toe rond de resulterende tekenreeks, wat resulteert in de tekenreeks ‘[1,4,3,6,7]’
Gebruik de methodeloads() uit de json-bibliotheek om de tekenreeks te parseren als een JSON-array, resulterend in de lijst [1, 4, 3, 6, 7] - Wijs de resulterende lijst toe aan new_list
- Druk de string af. Gewijzigde lijst is: gevolgd door de stringrepresentatie van 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> |
>
>Uitvoer
Modified list is : [1, 4, 3, 6, 7]>
De tijdscomplexiteit: O(n), waarbij n de lengte van test_list is. Dit komt doordat de methode join() O(n) tijd nodig heeft om de tekenreeksen samen te voegen, en de methode load() O(n) tijd nodig heeft om de resulterende tekenreeks te parseren.
De ruimtecomplexiteit: O(n), aangezien de resulterende lijst O(n) ruimte in het geheugen in beslag neemt.
Alle strings in de lijst converteren naar gehele getallen met behulp van de re-module
stapsgewijs algoritme voor de reguliere expressiebenadering om numerieke waarden uit een lijst met tekenreeksen te extraheren
vlc video's downloaden van youtube
- Definieer een invoerlijst met tekenreeksen.
- Definieer een reguliere-expressiepatroon dat overeenkomt met numerieke waarden in de tekenreeksen.
- Initialiseer een lege lijst om de geconverteerde numerieke waarden op te slaan.
- Herhaal elke tekenreeks in de invoerlijst.
- Gebruik het reguliere expressiepatroon om naar een numerieke waarde in de tekenreeks te zoeken.
- Als er een overeenkomst wordt gevonden, extraheert u de overeenkomende subtekenreeks en converteert u deze naar een float.
- Voeg de geconverteerde waarde toe aan de uitvoerlijst.
- Zodra alle strings in de invoerlijst zijn verwerkt, retourneert u de uitvoerlijst.
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)> |
>
>Uitvoer
Modified list is: [1, -4, 3, -6, 7]>
Tijdcomplexiteit: De tijdscomplexiteit van deze benadering is O(nm), waarbij n het aantal strings in de invoerlijst is en m de maximale lengte van elke string in de lijst. Het reguliere expressiepatroon moet op elke string in de lijst worden toegepast, wat in het ergste geval O(m) tijd kost. Daarom is de totale tijdscomplexiteit O(nm).
Complexiteit van de hulpruimte: De hulpruimtecomplexiteit van deze benadering is O(k), waarbij k het aantal numerieke waarden in de invoerlijst is. We moeten elke geconverteerde numerieke waarde opslaan in de uitvoerlijst, waarvoor O(k)-ruimte nodig is. Bovendien moeten we een reguliere expressie-object opslaan, waarvoor constante ruimte nodig is. Daarom is de totale complexiteit van de hulpruimte O(k).