812 Stimmen

Erstellen einer Liste mit einem einzelnen Element, das N-mal wiederholt wird

Ich möchte eine Reihe von Listen erstellen, die alle unterschiedlich lang sind. Jede Liste wird das gleiche Element enthalten e , wiederholt n mal (wobei n = Länge der Liste).

Wie erstelle ich die Listen, ohne ein Listenverständnis zu verwenden? [e for number in xrange(n)] für jede Liste?

14voto

Mad Scientist Punkte 17347
[e] * n

sollte funktionieren

9voto

Shrm Punkte 349

Wenn Sie auf der Suche nach einer einfachen Wiederholung sind:

[1, 2, 3, 1, 2, 3, 1, 2, 3]

einfach verwenden:

[1, 2, 3] * 3

Aber wenn Sie auf der Suche sind:

[1, 1, 1, 2, 2, 2, 3, 3, 3]

Diese ist besser, braucht aber mehr Zeit:

numpy.concatenate([([i]*3) for i in [1,2,3]], axis=0)

4voto

john22 Punkte 350

Entschuldigung für meine sehr späte Antwort Sie können verwenden numpy.repeat leicht. Schreiben Sie einfach den Wert, den Sie erzeugen möchten, und die Anzahl der Wiederholungen auf.

import numpy as np
x = [1,2,3]
y = np.linspace(0,1000,10000)
for i in x:
    new_x = np.repeat(i,len(y))
    print(new_x)

3voto

not a robot Punkte 3525

Wenn Sie Folgendes suchen

[1, 1, 1, 2, 2, 2, 3, 3, 3]

ohne Numpy können Sie das eingebaute itertools-Modul verwenden

from itertools import chain
list(chain.from_iterable(zip(*[[1,2,3]]*3)))

Mit einem einfachen Listenverständnis (sogar ohne itertools)

[e for x in zip(*[[1,2,3]]*3) for e in x]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X