[Python-Dev] Re: PEP 279 (original) (raw)
James Althoff jamescalthoff@yahoo.com
Thu, 4 Apr 2002 11:25:56 -0800
- Previous message: [Python-Dev] ANN: Pyrex - a language for writing Python extension modules
- Next message: [Python-Dev] Re: PEP 279
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
This is a multi-part message in MIME format.
------=_NextPart_000_0005_01C1DBCB.7D512B00 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
[David Abrahams]
. . . I want to put in another plug for itemize(),
Well, since we're doing post-Pronouncement fantasizing . . .
here's one more plug for "itemize".
Noting that
for k,v in adict.iteritems():
is probably as useful as
for i,v in enumerate(aseq):
why not change the spec to:
def itemize(iterable): ... # use iteritems if defined ... try: ... for item in iterable.iteritems(): yield item ... except AttributeError: pass ... # and then everything as before ... i =3D 0 ... iterator =3D iter(iterable) ... while 1: ... yield i,iterator.next() ... i +=3D 1 ...
So "itemize(iterable)" returns an iterator that yields (k,v) pairs from = the iterable.iteritems() method if defined, else pairs generated by = associating 0,1,...,n-1 with n values from iter(iterable).
This allows
for k,v in itemize(adict_or_aseq):
to be written uniformly for dicts and seqs.
And makes=20
list(itemize(adict)) =3D=3D adict.items()
work, removing one of the objections to the name "itemize".
Also, if one were to need, for example, a sequence whose indices start = at 1 instead of 0, one could define a sequence class that implements = iteritems and objects of said class would work just fine with "itemize".
Jim
------=_NextPart_000_0005_01C1DBCB.7D512B00 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
... # use iteritems if=20 defined
... =20 try:
... for item in=20 iterable.iteritems(): yield item
... except=20 AttributeError: pass
... # and then = everything as=20 before
... i =3D = 0
... =20 iterator =3D iter(iterable)
... while=20 1:
... yield=20 i,iterator.next()
... = i +=3D=20 1
...
defined, else pairs generated by associating 0,1,...,n-1 with n values = from=20 iter(iterable).
------=_NextPart_000_0005_01C1DBCB.7D512B00--
- Previous message: [Python-Dev] ANN: Pyrex - a language for writing Python extension modules
- Next message: [Python-Dev] Re: PEP 279
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]