Python: Zusammenführungsliste mit Bereichsliste

Ich habe eine list :

 L = ['a', 'b'] 

Ich muss eine neue list erstellen, indem du eine Originalliste list die von 1 bis k . Beispiel:

 k = 4 L1 = ['a1','b1', 'a2','b2','a3','b3','a4','b4'] 

Ich versuche:

 l1 = L * k print l1 #['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b'] l = [ [x] * 2 for x in range(1, k + 1) ] print l #[[1, 1], [2, 2], [3, 3], [4, 4]] l2 = [item for sublist in l for item in sublist] print l2 #[1, 1, 2, 2, 3, 3, 4, 4] print zip(l1,l2) #[('a', 1), ('b', 1), ('a', 2), ('b', 2), ('a', 3), ('b', 3), ('a', 4), ('b', 4)] print [x+ str(y) for x,y in zip(l1,l2)] #['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4'] 

Aber ich finde es sehr kompliziert. Was ist die schnellste und allgemeinste Lösung?

2 Solutions collect form web for “Python: Zusammenführungsliste mit Bereichsliste”

Sie können ein Listenverständnis verwenden:

 L = ['a', 'b'] k = 4 L1 = ['{}{}'.format(x, y) for y in range(1, k+1) for x in L] print(L1) 

Ausgabe

 ['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4'] 

Meine Lösung ist fast gleich, aber die Ausgabe ist in unterschiedlicher Reihenfolge …

Bestellt materie

Hier ist meine Lösung

 from itertools import product L = ['a', 'b'] k = 4 L2 = range(1, k+1) print [x+ str(y) for x,y in list(product(L,L2))] 

Ausgabe:

 ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'] 
  • Schwierigkeiten mit Listen in Python
  • Kann nicht nltk auf Mac OS El Capitan installieren
  • Warum ist 'list' kein reserviertes Wort in Python?
  • Äquivalente Nested Loop Struktur mit Itertools
  • Verständnis Klassen in Python 2 [lernen Python der harte Weg Übung 43]
  • Dateigröße für read ()?
  • Mit zwei und mehr Datenrahmen und Extrahieren von Daten über eindeutige Schlüssel in Python
  • Fehler beim Drucken 'bs4.element.NavigableString'
  • Streaming von Datei-Daten in mongodb gridfs
  • Warum braucht Python2.7 mehr Platz als Python3 dict?
  • Python Tkinter Button Aktion
  • Python ist die beste Programmiersprache der Welt.