No Python, como crio uma sequência de n caracteres em uma linha de código?
148
Eu preciso gerar uma string com n caracteres em Python. Existe uma resposta de uma linha para conseguir isso com a biblioteca Python existente? Por exemplo, preciso de uma sequência de 10 letras:
Deixe "em uma linha de código" para codificar concursos de ofuscação. Quando a solução para um problema for escrita naturalmente como uma linha, será; caso contrário, não deveria ser. Usá-lo como um objetivo próprio é um caminho garantido para códigos desagradáveis.
Glenn Maynard
3
A menos, claro, que isso seja lição de casa. Nesse caso, deixe o campo "em uma linha de código", mas seja honesto e inclua a tag [dever de casa].
S.Lott
5
Na verdade, não é uma pergunta de lição de casa, eu só precisava de uma seqüência de n comprimento nos meus scripts de teste. Eu esqueci que em Python, um caractere pode ser multiplicado por n onde n é um número inteiro positivo para alcançar o que eu quero.
E se você quiser algo mais complexo, como nletras minúsculas aleatórias, ainda será apenas uma linha de código (sem contar as instruções de importação e a definição n):
from random import choice
from string import ascii_lowercase
n =10
string_val ="".join(choice(ascii_lowercase)for i in range(n))
As dez primeiras letras minúsculas são string.lowercase[:10](se você importou o módulo da biblioteca padrão stringanteriormente, é claro ;-).
Outras maneiras de "criar uma sequência de 10 caracteres": 'x'*10(todos os dez caracteres serão minúsculos xs ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(as dez primeiras letras minúsculas novamente), etc, etc ;-).
Por que "uma linha"? Você pode ajustar qualquer coisa em uma linha.
Supondo que você queira que eles comecem com 'a' e aumente em um caractere por vez (com quebra automática> 26), aqui está uma linha:
>>> mkstring =lambda(x):"".join(map(chr,(ord('a')+(y%26)for y in range(x))))>>> mkstring(10)'abcdefghij'>>> mkstring(30)'abcdefghijklmnopqrstuvwxyzabcd'
Respostas:
Para simplesmente repetir a mesma letra 10 vezes:
E se você quiser algo mais complexo, como
n
letras minúsculas aleatórias, ainda será apenas uma linha de código (sem contar as instruções de importação e a definiçãon
):fonte
As dez primeiras letras minúsculas são
string.lowercase[:10]
(se você importou o módulo da biblioteca padrãostring
anteriormente, é claro ;-).Outras maneiras de "criar uma sequência de 10 caracteres":
'x'*10
(todos os dez caracteres serão minúsculosx
s ;-),''.join(chr(ord('a')+i) for i in xrange(10))
(as dez primeiras letras minúsculas novamente), etc, etc ;-).fonte
.lowercase
(ascii_lowercase
está nos Python 2 recentes, bem como no Python 3).se você quiser apenas letras:
se você quiser letras consecutivas (até 26):
fonte
Por que "uma linha"? Você pode ajustar qualquer coisa em uma linha.
Supondo que você queira que eles comecem com 'a' e aumente em um caractere por vez (com quebra automática> 26), aqui está uma linha:
fonte
Isso pode ser um pouco fora de questão, mas para aqueles interessados na aleatoriedade da sequência gerada, minha resposta seria:
Veja estas respostas e
random.py
a fonte para obter mais informações.fonte
Se você pode usar letras repetidas, pode usar o
*
operador:fonte