python - Alfabeto gama pitón
ord python (4)
En lugar de hacer una lista de alfabeto como esta:
alpha = [''a'', ''b'', ''c'', ''d''.........''z'']
¿Hay alguna manera de que podamos agruparlo en un rango o algo? Por ejemplo, para números se puede agrupar usando el range()
range(1, 10)
Aquí hay una implementación simple de rango de letras:
Código
def letter_range(start, stop="{", step=1):
"""Yield a range of lowercase letters."""
for ord_ in range(ord(start.lower()), ord(stop.lower()), step):
yield chr(ord_)
Manifestación
list(letter_range("a", "f"))
# [''a'', ''b'', ''c'', ''d'', ''e'']
list(letter_range("a", "f", step=2))
# [''a'', ''c'', ''e'']
En Python 2.7 y 3 puedes usar esto:
import string
string.ascii_lowercase
''abcdefghijklmnopqrstuvwxyz''
string.ascii_uppercase
''ABCDEFGHIJKLMNOPQRSTUVWXYZ''
Como dice @Zaz: string.lowercase
está en desuso y ya no funciona en Python 3, pero string.ascii_lowercase
funciona en ambos
>>> import string
>>> string.ascii_lowercase
''abcdefghijklmnopqrstuvwxyz''
Si realmente necesitas una lista:
>>> list(string.ascii_lowercase)
[''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'']
Y hacerlo con range
>>> list(map(chr, range(97, 123))) #or list(map(chr, range(ord(''a''), ord(''z'')+1)))
[''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'']
Otras características útiles del módulo de string
:
>>> help(string) # on Python 3
....
DATA
ascii_letters = ''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ''
ascii_lowercase = ''abcdefghijklmnopqrstuvwxyz''
ascii_uppercase = ''ABCDEFGHIJKLMNOPQRSTUVWXYZ''
digits = ''0123456789''
hexdigits = ''0123456789abcdefABCDEF''
octdigits = ''01234567''
printable = ''0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&/'()*+,-./:;<=>?@[//]^_`{|}~ /t/n/r/x0b/x0c''
punctuation = ''!"#$%&/'()*+,-./:;<=>?@[//]^_`{|}~''
whitespace = '' /t/n/r/x0b/x0c''
[chr(i) for i in range(ord(''a''),ord(''z'')+1)]