Wie kann ich eine Funktion erstellen, die eine Liste erstellt und die Anzahl der darin enthaltenen Zahlen jedes Mal auf einen bestimmten Wert erhöht?
Zum Beispiel, wenn das Maximum 4 war, würde die Liste
enthalten %Vor%Es ist schwer zu erklären, wonach ich suche, aber aus dem Beispiel, das ich denke, wirst du verstehen!
Danke
Eine verschachtelte Schleife. Dies wäre ein sehr einfacher Weg, dies zu tun. Es gibt viel bessere Möglichkeiten, dies sollte Ihnen die allgemeine Idee geben.
%Vor%Hier ist es mit Listenverständnis:
%Vor%Verwenden Sie extend wie vorgeschlagen.
%Vor% Ich würde itertools.chain
verwenden:
oder itertools.chain.from_iterable
, um es etwas träglicher zu machen:
Und für die ultimative Faulheit, paaren Sie mit itertools.repeat
- (mit xrange
in Sie verwenden python2.x):
Als Funktion:
%Vor% Dies kann jedoch nicht in einen echten Generator umgewandelt werden, im Gegensatz zu itertools.chain
, was der kanonische Weg ist.
Unterschiedliche Sichtweise auf das Problem (etwas weniger komplex):
%Vor%Eine ziemlich direkte Möglichkeit zum Erstellen einer Liste wie gezeigt ist über
%Vor% Dabei ist n
die größte Zahl, die in der Liste angezeigt wird. Das Obenstehende ist äquivalent zu den Methoden, die in mehreren zuvor vorgeschlagenen Antworten verwendet wurden, aber etwas sauberer im Ausdruck.
Eine Alternative zu allen bisher erwähnten Methoden ist, dass das i
th Element der Liste ungefähr gleich dem ganzzahligen Teil der Quadratwurzel von 2*i
ist. Mit leichten Anpassungen macht dies einen ziemlich einfachen Generator möglich, wie folgt.
Hier ist ein Beispiel für die Ausgabe des Codes im Python 2.7.3-Interpreter:
%Vor%Tags und Links python loops list while-loop