Propuesta para cambiar el range
Chema Cortes
pych3m4 en gmail.com
Dom Mayo 21 03:23:35 CEST 2006
El 19/05/06, John Alexis Guerra Gómez<john.guerra en gmail.com> escribió:
> Saludos, mirando a Matlab, se me ocurrió la posibilidad de cambiar el
> range(n) de python por algo más corto y quizá más entendible, [0:n], de
> esta manera los códigos quedarían más o menos así:
>
> for i in [0:10]:
> ...
>
> Sería una especie de modificación para la comprensión de listas, ¿qué
> les parece?, ¿alguién ya la ha propuesto como una PEP?, ¿Alguién adivina
> que diría Guido?
Existe un PEP-204 y está rechazado por inapetencia, ya que Guido no ha
explicado bien los motivos. Tal como dices, y en la situación actual
del python, sería una modicación de la comprensión de listas y, éso
mismo, daría un posible motivo de confusión.
Como pone en el pep (http://www.python.org/dev/peps/pep-0204/) ¿qué
tendría que dar lo siguiente?
>>> [x:y for x in (1, 2) for y in (3, 4)]
i) [1, 2, 1, 2, 3, 2, 2, 3]
ii) [[1, 2], [1, 2, 3], [2], [2, 3]]
De otra parte, para rangos amplios es recomendable utilizar
generadores y no listas (xrange vs range).
Sobre este mismo tema, personalmente me gusta la sintáxis que emplea
pyrex para los bucles.
En lugar de:
for i in range(0,10);
....
Emplea:
for i from 0<= i < 10:
...
Se aproxima más al lenguaje matemático y evita ambigüedades sobre si
los límites están incluídos o no.
Más información sobre la lista de distribución Python-es