Soy nuevo en Python, vengo de Java y C. ¿Cómo puedo incrementar un carácter? En Java o C, los caracteres e ints son prácticamente intercambiables, y en ciertos bucles, es muy útil para mí poder hacer incrementos de caracteres e indexar matrices por caracteres.
¿Cómo puedo hacer esto en Python? Ya es bastante malo no tener un bucleador tradicional de for (;;): ¿hay alguna forma de lograr lo que quiero lograr sin tener que repensar toda mi estrategia?
for
bucle:for i in range(50): do_something_with(i)
. ¡¡Vamos, eso no está tan mal !![''.join(i) for i in itertools.product(string.ascii_lowercase, repeat=2)]
Respuestas:
En Python 2.x, simplemente use las funciones
ord
ychr
:Python 3.x hace que esto sea más organizado e interesante, debido a su clara distinción entre bytes y Unicode. Por defecto, una "cadena" es Unicode, por lo que lo anterior funciona (
ord
recibe caracteres Unicode y loschr
produce).Pero si está interesado en bytes (como para procesar algún flujo de datos binarios), las cosas son aún más simples:
fuente
"ya es bastante malo no tener un bucleador tradicional para (;;)" ?? ¿Qué?
Estas tratando de hacer
¿O quizás estás usando
string.uppercase
ostring.letters
?Python no lo tiene
for(;;)
porque a menudo hay mejores formas de hacerlo. Tampoco tiene matemáticas de caracteres porque tampoco es necesario.fuente
Vengo de PHP, donde puedes incrementar char (A a B, Z a AA, AA a AB, etc.) usando el operador ++. Hice una función simple que hace lo mismo en Python. También puede cambiar la lista de caracteres a lo que necesite (minúsculas, mayúsculas, etc.).
fuente
Hay una manera de aumentar el uso de caracteres
ascii_letters
delstring
paquete, queascii_letters
es una cadena que contiene todo el alfabeto inglés, mayúsculas y minúsculas:También se puede hacer manualmente;
fuente
Marque esto: USANDO PARA LOOP
for a in range(5): x='A' val=chr(ord(x)+a) print(val)
SALIDA: ABCBDE
fuente
salida:
fuente