Question

Is there a built-in method / module in Python to generate letters such as the built-in constant LETTERS or letters constant in R?

The R built-in constant works as letters[n] where if n = 1:26 the lower-case letters of the alphabet are produced.

Thanks.

Was it helpful?

Solution

It's called string.ascii_lowercase.

If you wanted to pick n many random lower case letters, then:

from string import ascii_lowercase
from random import choice

letters = [choice(ascii_lowercase) for _ in range(5)]

If you wanted it as a string, rather than a list then use str.join:

letters = ''.join([choice(ascii_lowercase) for _ in range(5)])

OTHER TIPS

You can use map as in the following:

>>> map(chr, range(65, 91))
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
>>> map(chr, range(97, 123))
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
>>> a = map(chr, range(65, 70))
>>> a
['A', 'B', 'C', 'D', 'E']

With list comprehensions and reference from the above, there is another method:

>>> [chr(x) for x in range(97, 123)]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

Yet another way to do it which will give you directly a string:

>>> bytearray(range(97,123)).decode("utf-8")
u'abcdefghijklmnopqrstuvwxyz'

(it works with both python2 and python3, of course the u prefix won't be visible if it's python 3)

You can obviously tranform that string into a list like in other answers if that is what you prefer, for instance with:

>>> [x for x in bytearray(range(97,123)).decode("utf-8")]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

It is also very easy to change it to pick n random letters (repetition allowed):

>>> import random
>>> n = 10
>>> bytearray(random.randint(97, 122) for x in range(n)).decode('utf-8')
'qdtdlrqidx'

Or without repetition:

>>> import random
>>> n = 10
>>> bytearray(random.sample(range(97, 123),n)).decode('utf-8')
'yjaifemwbr'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top