Listen verschmelzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Mittwoch 3. Mai 2006, 18:00

Hallo!

Wie kann ich 2 Listen, die mit Strings gefüllt sind verschmelzen?
Besser gesagt:

Ich will eine 2. Liste an einer bestimmten stelle in die erste intigrieren.

Soll so in etwa aussehen:

Code: Alles auswählen


list1=['a','b','c','d','e','f']

list2=['bb','cc','dd']

resultat=['a','b','bb','cc','dd','c','d','e','f']

Geht das irgendwie über list1.insert? Habs nur geschafft, dass ich einen Tupel draus mache. Ich will aber, dass die resultat Liste nur aus Strings besteht.


Danke für eure Hilfe,

Johannes
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

Mittwoch 3. Mai 2006, 18:17

Moinsen...
Teile die erste Liste an der Stelle in zwei neue Listen auf, an der du die zweite Liste einfügen möchtest.
Nun hängst du an die erste getrennte (oder eine neue) Liste mit list.extend(otherList) die folgende Liste usw.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Mittwoch 3. Mai 2006, 20:41

Für den Fall, das die Liste sortiert sein soll:

Code: Alles auswählen

liste1.extend(liste2)
liste1.sort()
Ist natürlich nicht optimal, was die Laufzeit angeht, aber solange liste2 weniger als ein paar tausend Einträge sind...
BlackJack

Mittwoch 3. Mai 2006, 21:34

Entweder Du teilst `list1` in zwei Teile, den Teil vor dem Einfügepunkt und den Rest, und baust dann das Resultat aus diesen beiden Teilen und der `list2` zusammen, oder Du kannst die zweite Liste auch per "slice" in die erste einfügen. Dabei veränderst Du dann aber das `list1` Objekt!

Code: Alles auswählen

In [50]:list1 = ['a', 'b', 'c', 'd', 'e' ,'f']

In [51]:list2 = ['bb', 'cc', 'dd']

In [52]:resultat = list1[:2] + list2 + list1[2:]

In [53]:print resultat
['a', 'b', 'bb', 'cc', 'dd', 'c', 'd', 'e', 'f']

In [54]:list1[2:2] = list2

In [55]:print list1
['a', 'b', 'bb', 'cc', 'dd', 'c', 'd', 'e', 'f']
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Donnerstag 4. Mai 2006, 08:42

Danke für die zielführende Antwort :D

Johannes
Antworten