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

  • Senden von E-Mails in python sonderbares Verhalten
  • CPU-Temperatur mit Python bekommen?
  • Wie benutzt man eine andere Version von Python während der NPM-Installation?
  • H14 Fehler im Heroku - "keine Webprozesse laufen"
  • Erstellen eines Profilmodells mit einem InlineAdmin und einem post_save Signal in Django
  • Statsmodels Formel API (patsy): Wie schließt man eine Teilmenge von Interaktionskomponenten aus?
  • 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.