Python kombiniert zwei Listen ungleicher Länge in abwechselnder Weise

Ich habe zwei Listen, und ich möchte sie in einer wechselnden Weise kombinieren, bis man ausläuft, und dann möchte ich immer wieder Elemente aus der längeren Liste hinzufügen.

Aka

  • Kürzeste Wiederholungs-Sub-String
  • Wie man docx dateien mit python erstellt
  • Speichern und Plot mehrere Datensätze mit Python
  • Importiere csv mit unterschiedlicher Anzahl von Spalten pro Zeile mit Pandas
  • HTTP-POST-Antwort schlägt mit Web.py fehl
  • NI VISA + pyVisa auf Mac OS X (Snow Leopard)
  • list1 = [a,b,c] list2 = [v,w,x,y,z] result = [a,v,b,w,c,x,y,z] 

    Ähnlich wie diese Frage ( Pythonische Art, zwei Listen in einer alternierenden Weise zu kombinieren ), außer in diesen die Listen stoppen zu kombinieren, nachdem die erste Liste ausgelaufen ist: (.

    4 Solutions collect form web for “Python kombiniert zwei Listen ungleicher Länge in abwechselnder Weise”

    Hier ist die einfachere Version aus dem hervorragenden Werkzeug :

     >>> interleave([[1,2,3,4,5,6,7,],[0,0,0]]) [1, 0, 2, 0, 3, 0, 4, 5, 6, 7] 

    Vielleicht interessiert Sie sich für dieses itertools Rezept :

     def roundrobin(*iterables): "roundrobin('ABC', 'D', 'EF') --> ADEBFC" # Recipe credited to George Sakkis pending = len(iterables) nexts = cycle(iter(it).next for it in iterables) while pending: try: for next in nexts: yield next() except StopIteration: pending -= 1 nexts = cycle(islice(nexts, pending)) 

    Beispielsweise:

     >>> from itertools import cycle, islice >>> list1 = list("abc") >>> list2 = list("uvwxyz") >>> list(roundrobin(list1, list2)) ['a', 'u', 'b', 'v', 'c', 'w', 'x', 'y', 'z'] 

    Meine Lösung:

     result = [i for sub in zip(list1, list2) for i in sub] 

    EDIT: Frage gibt an, dass die längere Liste am Ende der kürzeren Liste fortgesetzt werden soll, was diese Antwort nicht tut.

    Sie konnten einfaches map und Listenverständnis verwenden:

     >>> [x for t in map(None, a, b) for x in t if x] ['a', 'v', 'b', 'w', 'c', 'x', 'y', 'z'] 
    Python ist die beste Programmiersprache der Welt.