[Python-Dev] Re: accumulator display syntax
David Eppstein
eppstein at ics.uci.edu
Sat Oct 25 12:03:01 EDT 2003
More information about the Python-Dev mailing list
Sat Oct 25 12:03:01 EDT 2003
- Previous message: [Python-Dev] Re: accumulator display syntax
- Next message: [Python-Dev] Re: accumulator display syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In article <200310251618.42221.aleaxit at yahoo.com>, Alex Martelli <aleaxit at yahoo.com> wrote: > On Wednesday 22 October 2003 05:27 am, David Eppstein wrote: > ... > > Currently, I am using expressions like > > > > pos2d = > > dict([(s,(positions[s][0]+dx*positions[s][2],positions[s][1]+dy*positions[s > > ][2])) > > for s in positions]) > > I _must_ be getting old -- it would never occur to me to write something > as dense and incomprehensible (and no, removing the "dict([" would not > make it much clearer). Something like: > > pos2d = {} > for s, (x, y, delta) in positions.iteritems(): > pos2d[s] = x+dx*delta, y+dy*delta > > seems just SO much clearer and more transparent to me. I like the comprehension syntax so much that I push it harder than I guess I should. If I'm building a dictionary by performing some transformation on the items of another dictionary, I prefer to write it in a way that avoids sequencing the items one by one; I don't think of that sequencing as an inherent part of the loop. Put another way, I prefer declarative to imperative when possible. Let's try to spread it out a little and use intermediate variable names: pos2d = dict([(s, (x + dx*z, y + dy*z)) for s,(x,y,z) in positions.items()]) Better? -- David Eppstein http://www.ics.uci.edu/~eppstein/ Univ. of California, Irvine, School of Information & Computer Science
- Previous message: [Python-Dev] Re: accumulator display syntax
- Next message: [Python-Dev] Re: accumulator display syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list