Ich versuche ein Programm in Python zu erstellen, das die n-te Glückszahl nach dem Glückszahl-Sieb generiert . Ich bin ziemlich neu bei Python, also weiß ich noch nicht so viel. Bisher habe ich herausgefunden, wie man eine Funktion erstellt, die alle Glückszahlen unterhalb einer bestimmten Zahl bestimmt:
%Vor%Gibt es eine Möglichkeit dies zu ändern, so dass ich stattdessen die n-te Glückszahl finden kann? Ich dachte darüber nach, die angegebene Zahl schrittweise zu erhöhen, bis eine Liste mit der passenden Länge für die gewünschte Glückszahl erstellt wurde, aber das scheint eine wirklich ineffiziente Art zu sein.
Bearbeiten: Ich habe das erfunden, aber gibt es einen besseren Weg?
%Vor%Ich habe das erfunden, aber gibt es einen besseren Weg?
Die Wahrheit ist, dass es immer einen besseren Weg geben wird, die verbleibende Frage ist: Ist es gut genug für Ihre Bedürfnisse?
Eine mögliche Verbesserung wäre, all dies in eine Generatorfunktion umzuwandeln. Auf diese Weise würden Sie nur neue Werte berechnen, wenn sie verbraucht werden. Ich habe diese Version entwickelt, die ich nur für ungefähr 60 Begriffe validiert habe:
%Vor% Wenn Sie beispielsweise den 100. Term aus diesem Generator extrahieren möchten, können Sie iertools nth rezept
Ich hoffe, das funktioniert, und es gibt ohne Zweifel mehr Raum für Codeverbesserungen (aber wie bereits erwähnt, gibt es immer Raum für Verbesserungen!).
Bei numpigen Arrays können Sie die boolesche Indizierung verwenden, die Ihnen helfen kann. Zum Beispiel:
%Vor%Hier ist eine Glückszahlfunktion, die numpige Arrays verwendet:
%Vor%Überprüft meine und @ icecrimes Ausgabe für 10, 50 und 500 - sie haben gepasst.
Ihr ist viel schneller als meins und skaliert besser mit n.
Tags und Links python