[Python-3000] what do I use in place of reduce? (original) (raw)

Nicholas T ntung at ntung.com
Thu Apr 24 20:49:03 CEST 2008


On Thu, Apr 24, 2008 at 11:23 AM, "Martin v. Löwis" <martin at v.loewis.de> wrote:

This is getting off-topic, so you don't need to answer; I still ask: Why???

yes I know, apologies for not mailing the right list. I'll try to do so next time. Dividing the previous result seems more logical: minutes = seconds/60, hours=minutes/60, days=hours/24, not minutes=seconds/60, hours=seconds/3600, days=seconds/86400. Also, if you do something like adding years, it's simple--you just append to the list versus change the last thing to a modulo and add another unit. If you add years, changing days to sidereal days would also be easier with the list. Also, you don't have to check multiplication, etc.

[in answer to your next question as well] The example was created to show the ability to express things with reduce, not necessarily to quickly calculate human readable time.

Even after knowing what this does, I still cannot easily understand how it does that. I think having reduce produce a growing value, and passing it an inhomogeneous list, is just deep abuse.

I guess I am likely to agree: the function is not associative or commutative, and unable to be parallelized--one of the reasons reduce was created.

In any case, writing multiple lines is good, writing a single line only is bad.

I don't agree. If it's code you want to write once and never look at again, having it out of the way can be nice. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-3000/attachments/20080424/0ed35cd7/attachment.htm>



More information about the Python-3000 mailing list