
Author: raymond.hettinger Date: Sun Oct 31 23:00:27 2010 New Revision: 86070 Log: Issue 7402: Improve reduce() example in the python idioms how-to. Modified: python/branches/release27-maint/Doc/howto/doanddont.rst Modified: python/branches/release27-maint/Doc/howto/doanddont.rst ============================================================================== --- python/branches/release27-maint/Doc/howto/doanddont.rst (original) +++ python/branches/release27-maint/Doc/howto/doanddont.rst Sun Oct 31 23:00:27 2010 @@ -281,23 +281,22 @@ More useful functions in :mod:`os.path`: :func:`basename`, :func:`dirname` and :func:`splitext`. -There are also many useful built-in functions people seem not to be aware of for -some reason: :func:`min` and :func:`max` can find the minimum/maximum of any -sequence with comparable semantics, for example, yet many people write their own -:func:`max`/:func:`min`. Another highly useful function is :func:`reduce`. A -classical use of :func:`reduce` is something like :: - - import sys, operator - nums = map(float, sys.argv[1:]) - print reduce(operator.add, nums)/len(nums) - -This cute little script prints the average of all numbers given on the command -line. The :func:`reduce` adds up all the numbers, and the rest is just some -pre- and postprocessing. - -On the same note, note that :func:`float`, :func:`int` and :func:`long` all -accept arguments of type string, and so are suited to parsing --- assuming you -are ready to deal with the :exc:`ValueError` they raise. +There are also many useful built-in functions people seem not to be aware of +for some reason: :func:`min` and :func:`max` can find the minimum/maximum of +any sequence with comparable semantics, for example, yet many people write +their own :func:`max`/:func:`min`. Another highly useful function is +:func:`reduce` which can be used to repeatly apply a binary operation to a +sequence, reducing it to a single value. For example, compute a factorial +with a series of multiply operations:: + + >>> n = 4 + >>> import operator + >>> reduce(operator.mul, range(1, n+1)) + 24 + +When it comes to parsing numbers, note that :func:`float`, :func:`int` and +:func:`long` all accept string arguments and will reject ill-formed strings +by raising an :exc:`ValueError`. Using Backslash to Continue Statements
participants (1)
-
raymond.hettinger