Die gegenseitige Konvertierung zwischen Datentypen wird durch Python-Bibliotheken ganz einfach erleichtert. Das Problem der Konvertierung der gesamten Liste von Zeichenfolgen in Ganzzahlen tritt jedoch im Entwicklungsbereich häufig auf. Lassen Sie uns einige Möglichkeiten zur Lösung dieses speziellen Problems besprechen.
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen mit eval()
Python-Funktion eval() Analysieren Sie das Ausdrucksargument, werten Sie es als Python-Ausdruck aus und führen Sie den Python-Ausdruck (Code) aus. Wenn der Ausdruck eine int-Darstellung ist, konvertiert Python das Argument in eine Ganzzahl.
Python3
lis>=> [>'1'>,>'-4'>,>'3'>,>'-6'>,>'7'>]> res>=> [>eval>(i)>for> i>in> lis]> print>(>'Modified list is: '>, res)> |
>
>
Salman Khan Khan Alter
Ausgabe:
Modified list is: [1, -4, 3, -6, 7]>
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen. Naive Methode
Dies ist die allgemeinste Methode, die jedem Programmierer bei der Ausführung dieser Art von Operation in den Sinn kommt. Führen Sie einfach eine Schleife über die gesamte Liste durch und konvertieren Sie jede Zeichenfolge der Liste durch Typumwandlung in int.
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))> |
>
>
Ausgabe:
Modified list is: [1, 4, 3, 6, 7]>
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen mit Listenverständnis
Dies ist lediglich eine Art Nachbildung der oben genannten Methode, die lediglich mithilfe des Listenverständnisses implementiert wurde, einer Art Abkürzung, nach der ein Entwickler immer sucht. Es spart Zeit und Komplexität beim Codieren einer Lösung.
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))> |
>
>
Ausgabe:
Modified list is : [1, 4, 3, 6, 7]>
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen mit Karte()
Dies ist die eleganteste, pythonischste und empfohlene Methode zur Ausführung dieser speziellen Aufgabe. Diese Funktion ist ausschließlich für diese Art von Aufgaben gedacht und sollte zu deren Ausführung verwendet werden.
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))> |
>
>
Ausgabe:
Modified list is : [1, 4, 3, 6, 7]>
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen. Liste von Zeichenfolgen mit gemischten Ganzzahldarstellungen
Hier konvertieren wir zunächst jede Zeichenfolge in eine Gleitkommazahl und dann mithilfe der Funktion „round()“ in eine Ganzzahl. Andernfalls wird ein Fehler ausgegeben.
Python3
lis>=> [>'1.1'>,>'4'>,>'3.5'>,>'6.7'>,>'7.2'>]> res>=> [>round>(>float>(i))>for> i>in> lis]> print>(>'Modified list is: '>, res)> |
>
>
Ausgabe:
Modified list is: [1, 4, 4, 7, 7]>
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen mithilfe der Funktion ast.literal_eval() aus dem ast-Modul
Ein weiterer Ansatz, der zum Konvertieren einer Liste von Zeichenfolgen in eine Liste von Ganzzahlen verwendet werden kann, ist die Verwendung der Funktion ast.literal_eval() aus dem ast-Modul. Mit dieser Funktion können Sie eine Zeichenfolge als Python-Literal auswerten, was bedeutet, dass sie Zeichenfolgen analysieren und auswerten kann, die Python-Ausdrücke wie Zahlen, Listen, Wörterbücher usw. enthalten.
Hier ist ein Beispiel für die Verwendung von ast.literal_eval() zum Konvertieren einer Liste von Zeichenfolgen in eine Liste von Ganzzahlen:
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> |
>
>Ausgabe
Modified list: [1, 4, 3, 6, 7]>
Die Zeitkomplexität der Verwendung der Funktion ast.literal_eval() aus dem ast-Modul zum Konvertieren einer Liste von Zeichenfolgen in eine Liste von Ganzzahlen beträgt O(n), wobei n die Länge der Liste ist. Dies bedeutet, dass die zur Ausführung dieses Ansatzes erforderliche Zeit direkt proportional zur Größe der Eingabeliste ist.
In Bezug auf die Raumkomplexität weist dieser Ansatz eine Raumkomplexität von O(n) auf, da er eine neue Liste von Ganzzahlen erstellt, die dieselbe Größe wie die Eingabeliste hat.
Konvertieren aller Zeichenfolgen in der Liste in Ganzzahlen mithilfe der Funktion numpy.array()
- Definieren Sie eine Liste von Zeichenfolgen
- Konvertieren Sie die Liste mit der Funktion numpy.array() in ein Numpy-Array vom Typ int
- Konvertieren Sie das Numpy-Array mit zurück in eine Liste list()-Funktion
- Drucken Sie die geänderte Liste aus
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)> |
>
>
Ausgabe:
Modified list is: [1, 4, 3, 6, 7]>
Zeitkomplexität: Die Zeitkomplexität dieses Ansatzes beträgt O(n), wobei n die Länge der Liste ist. Die Funktion numpy.array() benötigt O(n) Zeit, um ein neues Array zu erstellen, und die Funktion list() benötigt O(n) Zeit, um das Array wieder in eine Liste umzuwandeln.
Raumkomplexität: Die Raumkomplexität dieses Ansatzes beträgt O(n), da er ein neues Numpy-Array vom Typ int erstellt, das dieselbe Größe wie die Eingabeliste hat.
Ansatz: Verwendung der Funktion json.loads():
Algorithmus:
- Erstellen Sie eine Liste von Zeichenfolgen test_list mit den Werten [‚1‘, ‚4‘, ‚3‘, ‚6‘, ‚7‘]
- Verwenden Sie die Methode „join()“, um die Zeichenfolgen in test_list mit Kommas zu verbinden, was die Zeichenfolge „1,4,3,6,7“ ergibt.
- Fügen Sie der resultierenden Zeichenfolge eckige Klammern hinzu, sodass die Zeichenfolge „[1,4,3,6,7]“ entsteht.
Verwenden Sie die Methode „loads()“ aus der JSON-Bibliothek, um die Zeichenfolge als JSON-Array zu analysieren, was zur Liste [1, 4, 3, 6, 7] führt. - Weisen Sie die resultierende Liste new_list zu
- Geben Sie die Zeichenfolge „Modifizierte Liste ist:“ aus, gefolgt von der Zeichenfolgendarstellung „neue_Liste“.
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> |
>
>Ausgabe
Modified list is : [1, 4, 3, 6, 7]>
Die Zeitkomplexität: O(n), wobei n die Länge von test_list ist. Dies liegt daran, dass die Methode „join()“ O(n) Zeit benötigt, um die Zeichenfolgen zu verketten, und die Methode „loads()“ O(n) Zeit benötigt, um die resultierende Zeichenfolge zu analysieren.
Die Raumkomplexität: O(n), da die resultierende Liste O(n) Speicherplatz im Speicher einnimmt.
Konvertieren aller Zeichenfolgen in der Liste mithilfe des Moduls re in Ganzzahlen
Schritt-für-Schritt-Algorithmus für den regulären Ausdrucksansatz zum Extrahieren numerischer Werte aus einer Liste von Zeichenfolgen
MVC im Spring Framework
- Definieren Sie eine Eingabeliste von Zeichenfolgen.
- Definieren Sie ein Muster für reguläre Ausdrücke, um numerische Werte in den Zeichenfolgen abzugleichen.
- Initialisieren Sie eine leere Liste, um die konvertierten numerischen Werte zu speichern.
- Durchlaufen Sie jede Zeichenfolge in der Eingabeliste.
- Verwenden Sie das reguläre Ausdrucksmuster, um nach einem numerischen Wert in der Zeichenfolge zu suchen.
- Wenn eine Übereinstimmung gefunden wird, extrahieren Sie die übereinstimmende Teilzeichenfolge und konvertieren Sie sie in eine Gleitkommazahl.
- Hängen Sie den konvertierten Wert an die Ausgabeliste an.
- Sobald alle Zeichenfolgen in der Eingabeliste verarbeitet wurden, wird die Ausgabeliste zurückgegeben.
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)> |
>
>Ausgabe
Modified list is: [1, -4, 3, -6, 7]>
Zeitkomplexität: Die zeitliche Komplexität dieses Ansatzes beträgt O(nm), wobei n die Anzahl der Zeichenfolgen in der Eingabeliste und m die maximale Länge aller Zeichenfolgen in der Liste ist. Das reguläre Ausdrucksmuster muss auf jede Zeichenfolge in der Liste angewendet werden, was im schlimmsten Fall O(m) Zeit in Anspruch nimmt. Daher beträgt die Gesamtzeitkomplexität O(nm).
Komplexität des Hilfsraums: Die Hilfsraumkomplexität dieses Ansatzes beträgt O(k), wobei k die Anzahl der numerischen Werte in der Eingabeliste ist. Wir müssen jeden konvertierten numerischen Wert in der Ausgabeliste speichern, was O(k) Platz erfordert. Darüber hinaus müssen wir ein reguläres Ausdrucksobjekt speichern, das konstanten Speicherplatz benötigt. Daher beträgt die Gesamtkomplexität des Hilfsraums O(k).