En Python, ¿cómo creo una cadena de n caracteres en una línea de código?
148
Necesito generar una cadena con n caracteres en Python. ¿Hay una respuesta de una línea para lograr esto con la biblioteca Python existente? Por ejemplo, necesito una cadena de 10 letras:
Deje "en una línea de código" para codificar concursos de ofuscación. Cuando la solución a un problema se escribe naturalmente como una línea, lo será; de lo contrario no debería ser. Usarlo como un objetivo propio es una ruta garantizada hacia un código desagradable.
Glenn Maynard
3
A menos, por supuesto, que esto sea tarea. En ese caso, deje el "en una línea de código" pero sea honesto e incluya la etiqueta [tarea].
S.Lott
55
En realidad no es una pregunta de tarea, solo necesitaba una cadena de n de longitud en mis scripts de prueba. Olvidé que en Python, un carácter puede multiplicarse por n donde n es un número entero positivo para lograr lo que quiero.
Y si desea algo más complejo, como nletras minúsculas aleatorias, sigue siendo solo una línea de código (sin contar las declaraciones de importación y definir n):
from random import choicefrom string import ascii_lowercase
n =10
string_val ="".join(choice(ascii_lowercase)for i in range(n))
Las primeras diez letras minúsculas son string.lowercase[:10](si ha importado el módulo de biblioteca estándar stringanteriormente, por supuesto ;-).
Otras formas de "hacer una cadena de 10 caracteres": 'x'*10(todos los diez caracteres serán minúsculas xs ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(las primeras diez letras minúsculas nuevamente), etc, etc ;-).
¿Por qué "una línea"? Puede encajar cualquier cosa en una línea.
Suponiendo que desea que comiencen con 'a' y se incrementen en un carácter cada vez (con ajuste> 26), aquí hay una línea:
>>> mkstring =lambda(x):"".join(map(chr,(ord('a')+(y%26)for y in range(x))))>>> mkstring(10)'abcdefghij'>>> mkstring(30)'abcdefghijklmnopqrstuvwxyzabcd'
Respuestas:
Para repetir simplemente la misma letra 10 veces:
Y si desea algo más complejo, como
n
letras minúsculas aleatorias, sigue siendo solo una línea de código (sin contar las declaraciones de importación y definirn
):fuente
Las primeras diez letras minúsculas son
string.lowercase[:10]
(si ha importado el módulo de biblioteca estándarstring
anteriormente, por supuesto ;-).Otras formas de "hacer una cadena de 10 caracteres":
'x'*10
(todos los diez caracteres serán minúsculasx
s ;-),''.join(chr(ord('a')+i) for i in xrange(10))
(las primeras diez letras minúsculas nuevamente), etc, etc ;-).fuente
.lowercase
(ascii_lowercase
está en Python 2 reciente, así como en Python 3).si solo quieres letras:
si quieres letras consecutivas (hasta 26):
fuente
¿Por qué "una línea"? Puede encajar cualquier cosa en una línea.
Suponiendo que desea que comiencen con 'a' y se incrementen en un carácter cada vez (con ajuste> 26), aquí hay una línea:
fuente
Esto podría estar un poco fuera de lugar, pero para aquellos interesados en la aleatoriedad de la cadena generada, mi respuesta sería:
Vea estas respuestas y
random.py
la fuente para obtener más información.fuente
Si puede usar letras repetidas, puede usar el
*
operador:fuente