¿cuál es una manera simple de aumentar la longitud de una cadena a un entero arbitrario x? como 'a' va a 'z' y luego va a 'aa' a 'zz' a 'aaa', etc.aumentando el tamaño de cadena a través del bucle
Respuesta
Que debe hacer el truco:
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
Devuelve un generador. Se puede recorrer con un bucle for:
for s in iterate_strings(5)
O obtener una lista de las cuerdas:
list(iterate_strings(5))
Si desea iterar sobre cadenas más cortas demasiado, puede utilizar esta función:
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
aunque va hacia atrás, ¡genial! – calccrypto
Se corrigió el problema de retroceso. Vote por mi respuesta :) :) – Adam
intenté, pero aparentemente necesito 15 reputación – calccrypto
Puede multiplicar la cadena en el entero. Por ejemplo
>>> 'a' * 2
'aa'
>>> 'a' * 4
'aaaa'
>>> 'z' * 3
'zzz'
>>> 'az' * 3
'azazaz'
sí, pero quiero ejecutar todas las permutaciones – calccrypto
Veamos si lo entiendo bien: desea iterar sobre todas las cadenas entre 'aaaa' y 'zzzz', ('aaaa', 'aaab', 'aaac' , .... 'zzzz'). – Adam
correcto. hasta el final de la cadena x caracteres largos – calccrypto
Define x. Estoy usando x = 5
para este ejemplo.
x = 5
import string
for n in range(1,x+1):
for letter in string.ascii_lowercase:
print letter*n
Aquí está mi solución, similar a la de Adam, excepto que no es recursiva. :]
.
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)
Y devuelve un generator
, por lo que puede utilizar un bucle for
para iterar sobre ella:
for letters in letter_generator(5):
# ...
Que se diviertan!
(Esta es la segunda vez hoy he encontrado itertools.product()
útil. Woot.)
- 1. bucle PL/SQL a través del cursor
- 2. bucle a través de subcarpetas
- 3. bucle de python a través del archivo de entrada
- 4. Java, un bucle a través del conjunto de resultados
- 5. Wordpress NextGEN bucle a través de imágenes del álbum específico
- 6. Cruce iterativo a través del árbol para encontrar el tamaño
- 7. ¿Está ejecutando paquetes SSIS en asignaciones de memoria separadas o aumentando el tamaño predeterminado del búfer?
- 8. bucle a través de $ _GET resultados
- 9. bucle a través de un directorio de
- 10. bucle a través del resultado JSON con jQuery
- 11. Metafunción de tamaño de matriz: ¿está aumentando en alguna parte?
- 12. Bucle a través de cuadros de texto
- 13. php bucle a través de múltiples matrices
- 14. C# bucle a través de una matriz
- 15. bucle a través de los valores enum
- 16. bucle a través de un NSMutableDictionary
- 17. Bucle a través de la enumeración
- 18. tamaño Get del archivo solicitado a través de AJAX
- 19. Cómo iterar a través de una cadena
- 20. uso de la CPU aumentando hasta 100% en bucle infinito en el hilo
- 21. php: bucle a través matriz JSON
- 22. Obtener el tamaño del clúster de un disco duro (a través del código)
- 23. Bucle a través de una serie de qplots
- 24. jQuery: bucle animado, continuo a través de los niños
- 25. bucle a través de matriz JSON en una lista jQuery
- 26. Aumentando el tiempo de espera para .ashx
- 27. Gráfico de Facebook bucle API a través de paginación
- 28. añadir objetos de diferente nombre a través de bucle
- 29. Buscar tamaño de columna subyacente a través de Metadatos NHibernate
- 30. bucle a través de las filas de un DataTable
dónde viene 'x' entrar? Al igual que si la cadena es "abc" y "x" es 4, la cadena se convierte en "abg"? –
oops. quise decir que la cuerda se vuelve x larga, entonces si x = 4, las cuerdas serían 'aaaa' ... 'zzzz' – calccrypto
Algo relacionado, ver [este código de golf] (http://stackoverflow.com/questions/ 2634427/code-golf-numeric-equivalent-of-an-excel-column-name /). –