Ich versuche, eine Liste von zwei Listen zu ändern. Für jede der beiden Inside-Listen führe ich einige Operationen aus und teile sie in neue Listen auf.
Hier ist ein einfaches Beispiel dafür, was ich versuche zu tun:Ersetzen eines Elements in einer Liste durch mehrere Elemente
[['a', 'b'], ['c', 'd']] --> [['a'], ['b'], ['c', 'd']]
Derzeit geht mein Algorithmus ['a', 'b']
auf eine Funktion, ob oder ob nicht bestimmt sie in [['a'], ['b']]
aufgeteilt werden soll (zum Beispiel auf deren Korrelationen basiert). Die Funktion gibt [['a'], ['b']]
zurück, die mir teilt, dass ['a', 'b']
geteilt werden sollte, oder ['a', 'b']
(die ursprüngliche Liste) zurückgibt, die angibt, dass es nicht aufgeteilt werden sollte.
Zur Zeit habe ich so etwas wie diese:
blist = [['a', 'b'], ['c', 'd']] #big list
slist = [['a'], ['b']] #small list returned by function
nlist = [items for i in xrange(len(blist)) for items in (slist if i==0 else blist[i])]
Dies erzeugt [['a'], ['b'], 'c', 'd']
in Bezug auf den gewünschten Ausgang [['a'], ['b'], ['c', 'd']]
gegenüber, die nicht die zweite Liste im ursprünglichen blist nicht verändert. Ich verstehe, warum das passiert - meine zweite Schleife wird in diesem Fall auch auf blist[1]
angewendet, aber ich bin mir nicht sicher, wie ich das beheben soll, da ich das Verständnis der Liste nicht vollständig verstehe.
Eine 'pythonische' Lösung ist bevorzugt. Irgendwelche Rückmeldungen würden geschätzt werden, danke!
EDIT: Wie der Titel schon sagt, ich versuche ['a', 'b']
mit ['a'], ['b']
zu 'ersetzen'. So würde Ich mag die ‚Position‘ die gleiche sein, ['a'], ['b']
in der ursprünglichen Liste erscheinen, die vor ['c', 'd']
ERGEBNISSE Danke Christian, Paul und schwobaseggl für Ihre Lösungen! Sie alle arbeiten :)
Sie widersprechen sich. Übergeben Sie Elemente an eine Funktion oder verwenden Sie ein geschachteltes Listenverständnis? Wie auch immer, wenn du Listenkompressen nicht verstehst, warum benutzt du keine einfachen For-Schleifen, bis du es tust? Ich würde. – hop
Sorry, ich meine, dass die Funktion verwendet wird, um zu bestimmen, ob die Liste aufgeteilt ist oder nicht, die geschachtelte Liste Verständnis führt die Änderung/split – AsheKetchum
@hop Ich glaube, ich verstehe einfache for-Schleifen. Ich würde gerne mit Listenerkenntnissen vertrauter sein und ein besseres Verständnis haben. Ich versuche nur etwas Übung zu bekommen. Auch mit "Ich würde" meinen Sie, dass die Verwendung von einfachen For-Loops nur dazu beiträgt, Listen-Comprehensions zu verstehen? Ich verstehe, dass sie Ähnlichkeiten haben, aber wie in meinem Beispiel scheint das Listenverständnis viel kompakter zu sein mit den Aussagen in verschiedenen Ordnungen. Können Sie näher auf die Beziehung zwischen den beiden eingehen? – AsheKetchum