Ich habe zwei Listen von Listen.Get Elemente einer Unterliste in Python basierend auf Indizes einer anderen Liste
Ich möchte die Elemente aus der zweiten Liste von Listen, basierend auf einem Wert aus der ersten Liste von Listen erhalten.
Ich wenn ich einfache Listen habe, alles glatt laufen, aber sobald ich Liste der Liste habe, fehlt mir etwas am Ende.
Hier ist der Code für zwei Listen arbeiten (N = Namen und V = Werte):
N = ['name 1', 'name 2','name 3','name 4','name 5','name 6','name 7','name 8','name 9','name 10']
V = ['val 1', 'val 2','val 3','val 4','val 5','val 6','val 7','val 8','val 9','val 10']
bool_ls = []
NN = N
for i in NN:
if i == 'name 5':
i = 'y'
else:
i = 'n'
bool_ls.append(i)
# GOOD INDEXES = GI
GI = [i for i, x in enumerate(bool_ls) if x == 'y']
# SELECT THE GOOD VALUES = "GV" FROM V
GV = [V[index] for index in GI]
wenn ich eine Funktion definieren, arbeitet mit den beiden Listen gut angewendet:
def GV(N,V,name):
bool_ls = []
NN = N
for i in NN:
if i == name:
i = 'y'
else:
i = 'n'
bool_ls.append(i)
GI = [i for i, x in enumerate(bool_ls) if x == 'y']
GV = [V[index] for index in GI]
return GV
Sobald ich "Liste der Liste" versuche, kann ich die ähnlichen Ergebnisse nicht erhalten. Mein Code sieht wie folgt aus:
NN = [['name 1', 'name 2','name 3'], ['name 1', 'name 2','name 3'], ['name 1', 'name 2','name 3'], ['name 1', 'name 2','name 3'], ['name 1', 'name 2','name 3'], ['name 1', 'name 2','name 3']]
VV = [['val 1', 'val 2', 'val 3'], ['val 1', 'val 2', 'val 3'], ['val 1', 'val 2', 'val 3'], ['val 1', 'val 2', 'val 3'], ['val 1', 'val 2', 'val 3']]
def GV(NN,VV,name):
bool_ls = []
NNN = NN
for j in NNN:
for i in j:
if i == name:
i = 'y'
else:
i = 'n'
bool_ls.append(i)
# here is where I'm lost
Hilfe sehr geschätzt! Vielen Dank.
Warum benutzen Sie nicht 'zip'? –
Auch, FYI: 'NNN = NN' macht _ ** nicht _ ** eine Kopie von' NN'. –
Vielen Dank für Ihren Kommentar - aber wenn ich mit deepcopy meine Ergebnisse ändere, habe ich newlist = oldlist – alc