"Shashwat Anand" <anand.shash...@gmail.com> wrote
sum([1, 2, 3], 4)
10
sum( ) -> sum: (sequence[, start]), so shouldn't 4 be the 'start' that's
second case ?
Try help(sum):
help(sum)
Help on built-in function sum in module __builtin__:
sum(...)
sum(sequence, start=0) -> value
Returns the sum of a sequence of numbers (NOT strings) plus the value
of parameter 'start'. When the sequence is empty, returns start.
So the badly named start parameter is the starting value of the sum.
So in your case it adds 4+ sum(1,2,3) = 4+6 = 10
sum ( [ [ 1 ], [ 2, 3 ] ], [ ])
[1, 2, 3]
What's happening here exactly ?
Its been given a list of lists so its adding the list elements
[1] + [2,3] -> [1,2,3]
And adding an empty list to a list returns the original list.
[ 1] + [2, 3] = [1, 2, 3] is understandable, but why do we pass a [ ] as
a
[start] parameter to do so ?
Because the default start is 0 which is not a list so the addition would
fail.
sum([[1],[2,3]],[])
[1, 2, 3]
sum([[1],[2,3]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'list'
reduce(operator.mul, [1, 2, 3], 4)
24
how does it works ?
help(reduce)
Help on built-in function reduce in module __builtin__:
reduce(...)
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a
sequence,
from left to right, so as to reduce the sequence to a single value.
For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
((((1+2)+3)+4)+5). If initial is present, it is placed before the
items
of the sequence in the calculation, and serves as a default when the
sequence is empty.
So it starts with 4 then applies mul to [1,2,3]
4*1 -> [4,2,3]
4*2 -> [8,3]
8*3 -> 24
I wrote an LCM function of mine as follows:
I'll let somebody else comment, its too late for me! :-)
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor