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