number ranges
Steven D'Aprano
steve at REMOVEMEcyber.com.au
Tue Feb 21 03:59:37 EST 2006
Alex Martelli wrote:
> Colin J. Williams <cjw at sympatico.ca> wrote:
> ...
>
>>>>I am also open to such arguments but it will be tough to convince me
>>>>that "x to y" should mean something different from what it means in
>>>>Pascal, BASIC, and English.
>>>
> ...
>
>>1. Why not treat '2 to 5' or '(2 to 5)' as a semi-open interval?
>
>
> Reread the part I quoted above: at least some of the proponents of this
> syntax appear to be totally ignorant of 30 years of literature and
> practice of programming, "it will be tough to convince" them that closed
> intervals are a terrible mistake and semi-open ones the only way to go.
I intellectually understand that semi-open intervals
are the only way to go. But reading the words, the part
of my brain that speaks English cries out for a closed
interval. Bad brain.
Given the overwhelming benefit of semi-closed
intervals, I wish to amend my proposal to follow Alex's
suggestions, namely:
for i in (1 to 10 by 3):
print i
should print 1 4 7.
That would make (a to b by c) equivalent to
range(a,b,c) except that it returns an iterator rather
than a list. Hmmm... putting it that way, the new
syntax actually costs 1 keystroke, or saves 1 if you
put spaces after the commas in the range expression.
Does it add enough clarity and ease of understanding to
justify two new keywords?
> Introducing a new syntax, with semantics that "don't convince" some of
> its prominent proponents, would be self-destructive (I shudder just to
> think of the amount of time and energy we'd all be spending dealing with
> whines about it); Python is clearly much better off if such people run
> away to Ruby, with its (expletive deleted) a..b AND a...b syntaxes just
> to ensure maximum confusion;-).
Ruby uses both .. and ...? Now I'm frightened.
--
Steven.
More information about the Python-list
mailing list