Was ist ein einfacher Weg, um die Länge einer Zeichenfolge auf eine beliebige ganze Zahl x zu erhöhen? wie 'a' geht zu 'z' und dann geht 'aa' zu 'zz' zu 'aaa' usw.zunehmende String-Größe durch Schleife
Antwort
, die den Trick tun sollten:
def iterate_strings(n):
if n <= 0:
yield ''
return
for c in string.ascii_lowercase:
for s in iterate_strings(n - 1):
yield c + s
Es gibt einen Generator. Sie können es mit einem iterieren for-Schleife:
for s in iterate_strings(5)
Oder eine Liste der Strings erhalten:
list(iterate_strings(5))
Wenn auch Sie über kürzere Strings iterieren möchten, können Sie diese Funktion nutzen zu können:
def iterate_strings(n):
yield ''
if n <= 0:
return
for c in string.ascii_lowercase:
for s in iterate_strings(n - 1):
yield c + s
obwohl es rückwärts geht, cool! – calccrypto
Das Problem wurde behoben. Vote für meine Antwort bitte :) – Adam
Ich habe versucht, aber anscheinend brauche ich 15 Ruf – calccrypto
Sie können die Zeichenkette in der ganzen Zahl multiplizieren. Zum Beispiel
>>> 'a' * 2
'aa'
>>> 'a' * 4
'aaaa'
>>> 'z' * 3
'zzz'
>>> 'az' * 3
'azazaz'
Ja, aber ich möchte alle Permutationen durchlaufen – calccrypto
Mal sehen, ob ich dich richtig verstehe: Du willst über alle Strings zwischen 'aaaa' und 'zzzz' ('aaaa', 'aaab', 'aaac') iterieren , .... 'zzzz'). – Adam
korrekt. den ganzen Weg, bis die Zeichenfolge x Zeichen lang ist – calccrypto
Definieren x. Ich verwende x = 5
für dieses Beispiel.
x = 5
import string
for n in range(1,x+1):
for letter in string.ascii_lowercase:
print letter*n
Hier ist meine Lösung, ähnlich wie bei Adam, außer dass es nicht rekursiv ist. :]
.
from itertools import product
from string import lowercase
def letter_generator(limit):
for length in range(1, limit+1):
for letters in product(lowercase, repeat=length):
yield ''.join(letters)
Und es gibt ein generator
, so dass Sie eine for
Schleife iterieren es verwenden können:
for letters in letter_generator(5):
# ...
Viel Spaß!
(Dies ist das zweite Mal heute fand ich itertools.product()
nützlich. Woot.)
- 1. Errechnen Stringgröße ohne render
- 2. Reguläre Expressionsgrenze Stringgröße
- 3. regex Ersatz durch eine zunehmende Zahl
- 4. zunehmende Timer in Python
- 5. zunehmende Codeleistung von codility
- 6. Silverlight: Wie wird die Stringgröße vorhergesagt?
- 7. wenn Zahl gestoppt hat zunehmende
- 8. Zunehmende Seitenhöhe mit Javascript
- 9. Zunehmende mysql Importgröße
- 10. Zunehmende INSERT-Geschwindigkeit
- 11. Schleife durch Listenelemente
- 12. Schleife durch dynamische Variablennamen
- 13. Ansible Schleife durch Datei
- 14. Perl Hash-Schleife durch
- 15. Schleife durch JPanel
- 16. Schleife durch ein NSMutableDictionary
- 17. Printring String durch Schleife
- 18. jQuery Schleife durch Json?
- 19. Schleife durch System.Diagnostics.TraceEventType Enumeration
- 20. dot.js Schleife durch Objekt
- 21. Schleife durch Eigenschaften vb.net
- 22. Schleife nur durch
- 23. Schleife durch jeden Knoten
- 24. MySQL-Schleife durch Tabellen
- 25. Schleife durch Unterordner
- 26. Schleife durch einen csv
- 27. Wie Schleife durch $ firebaseArray
- 28. Schleife durch vordefinierte Werte
- 29. Schleife durch Kontrollen
- 30. Schleife durch childnodes
Wo 'X' reinkommen? Wenn die Zeichenfolge "abc" ist und "x" 4 ist, wird die Zeichenfolge "abg"? –
oops. Ich wollte sagen, dass die Zeichenfolge x lang wird, also wenn x = 4 wäre, wären die Strings "aaaa" ... "zzzz" – calccrypto
Etwas verwandt, siehe [dieser Code Golf] (http://stackoverflow.com/questions/ 2634427/code-golf-numeric-äquivalent-eines-excel-spaltenname /). –