Ich habe gerade mit Python 2.7 für ein paar Monate gestartet. Ich arbeite normalerweise mit einer 2D-Liste in Python, einfache Aufgabe, aber ich frage mich, ob es eine elegantere Möglichkeit gibt, meinen Job in Python 2.7 zu erledigen?Elegante Art, mit 2D-Liste in Python zu arbeiten
Hier ist meine Aufgabe. Ich habe eine 2D-Liste:
Ich möchte die obige 2D-String-Liste in 2D Integer-Liste konvertieren.
expected_result = [[1, 2], [3, 4]]
Wie üblich, kann ich wie folgt:
def convert_2D_string_list(my_list):
for a_group in my_list:
yield [int(k.replace("__cat_","")) for k in a_group]
Aber die oben konnte nicht arbeiten, wenn meine Eingabe hat 3 Dimensionen wie:
my_second_list = [[["__cat_1", "__cat_2"], "__cat_12"],
[["__cat_3", "__cat_4"], "__cat_34"]]
Wenn meine Eingangsliste integer
ist Ich kenne den eleganten Weg um ihn zu transformieren. Zum Beispiel:
def convert_2D_int_list:
my_list = [[1, 2], [3, 4]]
import numpy as np
# Assume that, I want to add 1 for each of element
# Convert to numpy array
my_list = np.asarray(my_list)
my_list += 1
# my_list = [[2, 3], [4, 5]]
return my_list
Was ist die beste Methode für meine convert_2D_string_list
Methode? Also im Falle ist es nicht 2D-Liste, aber 3D-Liste -> Ich habe keine Angst vor der Anzahl der Dimensionen.
Jeder Vorschlag wäre willkommen. Danke.
Die wichtige Sache zu verstehen ist, dass Listen haben keine Dimension ns. Außerdem würde ich nicht aufrufen, eine Liste in ein elegantes Array umzuwandeln, wenn das, was Sie wirklich wollen, eine Liste ist. Sie sind zwei verschiedene Datenstrukturen mit unterschiedlichen Anwendungsfällen. –
Ich würde eine rekursive Funktion empfehlen. – norok2
@ juanpa.arrivillaga Sie haben absolut recht. Meine Liste hat keine Dimensionen. Ich möchte nur eine will das Multi-Dimension-Array in die andere Form konvertieren, aber behalten Sie die Dimension. Vielleicht ist "elegant" hier nicht geeignet. Tut mir leid für mein schlechtes Englisch. –