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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type content=3D"text/html; = charset=3Diso-8859-1"> <META content=3D"MSHTML 6.00.2715.400" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT face=3DArial size=3D2>[David Abrahams]</FONT></DIV> <DIV><FONT face=3DArial size=3D2>> . . . I want to put in = another plug for=20 itemize(),<BR></FONT></DIV> <DIV><FONT face=3DArial size=3D2>Well, since we're doing = post-Pronouncement=20 fantasizing . . .</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial><FONT size=3D2>here's one more plug for=20 "itemize".</FONT></FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>Noting that</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2> for k,v in=20 adict.iteritems():</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>is probably as useful as</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2> for i,v in=20 enumerate(aseq):</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>why not c</FONT><FONT = face=3DArial><FONT size=3D2>hange=20 the spec to:</FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT size=3D2></FONT></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2>>>> def=20 itemize(iterable):<BR>... # use iteritems if=20 defined<BR>... =20 try:<BR>... for item in=20 iterable.iteritems(): yield item<BR>... except=20 AttributeError: pass<BR>... # and then = everything as=20 before<BR>... i =3D = 0<BR>... =20 iterator =3D iter(iterable)<BR>... while=20 1:<BR>... yield=20 i,iterator.next()<BR>... = i +=3D=20 1<BR>...<BR></FONT></DIV> <DIV><FONT face=3DArial><FONT><FONT size=3D2><FONT>So = "itemize(iterable)" returns an=20 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=20 iter(iterable).</FONT></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT><FONT=20 size=3D2><FONT></FONT></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT><FONT size=3D2><FONT>This=20 allows</FONT></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT><FONT=20 size=3D2><FONT></FONT></FONT></FONT></FONT> </DIV> <DIV><FONT><FONT size=3D2><FONT face=3D"Courier New"> = for k,v in=20 itemize(adict_or_aseq):</FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT><FONT=20 size=3D2><FONT></FONT></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT><FONT size=3D2><FONT>to be written = uniformly for dicts=20 and seqs.</FONT></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>And makes </FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3D"Courier New" size=3D2> = list(itemize(adict)) =3D=3D=20 adict.items()</FONT></DIV> <DIV><FONT face=3D"Courier New" size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>work, removing one of the objections to = the name=20 "itemize".</FONT></DIV> <DIV><FONT face=3DArial><FONT><FONT=20 size=3D2><FONT></FONT></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT><FONT size=3D2><FONT>Also, if one were to = need, for=20 example, a sequence whose indices start at 1 instead of 0, one = could define=20 a sequence class that implements iteritems and objects of said = class would=20 work just fine with = "itemize".</FONT></FONT></FONT></FONT></DIV> <DIV><FONT face=3DArial><FONT><FONT=20 size=3D2><FONT></FONT></FONT></FONT></FONT> </DIV> <DIV><FONT face=3DArial><FONT><FONT=20 size=3D2><FONT>Jim</DIV></FONT></FONT></FONT></FONT></BODY></HTML> ------=_NextPart_000_0005_01C1DBCB.7D512B00--
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4