"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

Reply via email to