Auspacken von Tupeln in einem Python-Listen-Verständnis (nicht mit dem * -operator)

Ich versuche, eine Liste auf der Grundlage einer anderen Liste zu erstellen, mit den gleichen Werten wiederholt 3 mal nacheinander.

Im Moment benutze ich:

  • Tupel mit einem einzelnen Element aus einer Funktion zurückgeben
  • >>> my_list = [ 1, 2 ] >>> three_times = [] >>> for i in range( len( my_list ) ): ... for j in range( 3 ): ... three_times.append( my_list[ i ] ) ... >>> print three_times [1, 1, 1, 2, 2, 2] 

    Aber ich möchte es mit einer mehr Pythonischen Weise machen, wie zum Beispiel:

     >>> my_list = [ 1, 2 ] >>> three_times = [] >>> three_times = [ (value,) * 3 for value in my_list ] >>> print three_times [(1, 1, 1), (2, 2, 2)] 

    Allerdings kann ich keinen Weg finden, die Tupel auszupacken.

    Etwas wie three_times = [ *( (value,) * 3 ) for value in my_list ] wäre perfekt zum Auspacken der Tupel, aber das ist keine korrekte Syntax.

  • Unterschiede zwischen zwei Listen
  • One Solution collect form web for “Auspacken von Tupeln in einem Python-Listen-Verständnis (nicht mit dem * -operator)”

    Sie können nicht * iterable Auspacken in einem Listenverständnis verwenden, dass Syntax nur in Anrufen und in Python 3 verfügbar ist, wenn Sie Zuweisungen verwenden.

    Wenn du ein Listenverständnis verwenden willst, mach einfach deine Loops in Serie; Sie wollen auf die Werte von my_list direkt my_list anstatt Indizes zu erzeugen:

     [v for v in my_list for _ in range(3)] 
    Python ist die beste Programmiersprache der Welt.