[Python-Dev] Lukewarm about range literals
Fredrik Lundh
Fredrik Lundh" <effbot@telia.com
Tue, 29 Aug 2000 09:09:02 +0200
tim peters wrote:
> Charles likes slices. Me too! I *love* them. But as a standalone notation
> (i.e., not as a subscript), part of the glory of slicing breaks down: for
> the list a, a[:] makes good sense, but when *iterating* over a, it's
> suddenly [:len(a)] because there's no context to supply a correct upper
> bound.
agreed. ranges and slices are two different things. giving
them the same syntax is a lousy idea.
> Post 2.0, who knows. I'm not convinced Python actually needs another
> arithmetic-progression *list* notation. If it does, I've always been fond
> of Haskell's range literals (but note that they include the endpoint):
>
> Prelude> [1..10]
> [1,2,3,4,5,6,7,8,9,10]
> Prelude> [1, 3 .. 10]
> [1,3,5,7,9]
isn't that taken from SETL?
(the more I look at SETL, the more Pythonic it looks. not too
bad for something that was designed in the late sixties ;-)
talking about SETL, now that the range literals are gone, how
about revisiting an old proposal:
"...personally, I prefer their "tuple former" syntax over the the
current PEP202 proposal:
[expression : iterator]
[n : n in range(100)]
[(x**2, x) : x in range(1, 6)]
[a : a in y if a > 5]
(all examples are slightly pythonified; most notably, they
use "|" or "st" (such that) instead of "if")
the expression can be omitted if it's the same thing as the
loop variable, *and* there's at least one "if" clause:
[a in y if a > 5]
also note that their "for-in" statement can take qualifiers:
for a in y if a > 5:
...
</F>