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

  • Probleme mit getsitepackages unter einem virtualenv
  • Wie überprüfe man, ob Wert logisch ganzzahlig ist?
  • Unicode- und Python-Ausgabe (Zugriff auf Unicde-Code-Charts)
  • TypeError: nicht unterstützter Operandentyp (s) für%: 'int' und 'tuple' bei Ausführung eines Befehls mit python
  • Glättung des Graphen gibt einen großen Unterschied in der Reichweite
  • Wie bekomme ich den Namen des Betriebssystems freundlich mit Python 2.5?
  • 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.