Tuple Comprehension ???
Hen Hanna
henhanna at gmail.com
Tue Feb 21 20:52:21 EST 2023
On Tuesday, February 21, 2023 at 10:39:54 AM UTC-8, Thomas Passin wrote:
> On 2/21/2023 12:32 PM, Axy via Python-list wrote:
> > On 21/02/2023 04:13, Hen Hanna wrote:
> >>
> >> (A) print( max( * LisX ))
> >> (B) print( sum( * LisX )) <------- Bad
> >> syntax !!!
> >>
> >> What's most surprising is.... (A) is ok, and (B) is not.
> >>
> >> even tho' max() and sum() have (basically) the same
> >> syntax... ( takes one arg , whch is a list )
> They **don't** have basically the same signature, though. max() takes
> either an iterable or two or more numbers. Using max(*list_) presents
> it with a series of numbers, so that's OK.
>
> sum() takes just one iterable (plus an optional start index). Using
> sum(*list_) presents it with a series of numbers, and that does not
> match its signature.
>
> Check what I said:
>
> >>> help(sum)
> Help on built-in function sum in module builtins:
> sum(iterable, /, start=0)
> >>> help(max)
thakns... i like the use of the word [signature]
thanks for all the commetns... i'll try to catch up later.
i think i understand it much better now.
regular Python (func-calling) notation is like CL (Common Lisp) funcall.
and fun( * args ) notation is like a (compile-time) macro
( max( * X )) ----macroexpand---> (apply max X)
( max( * [1,2,3,4] )) ----macroexpand---> (apply max '(1 2 3 4) )
and
Max() can take many arguments, but
Sum() can basically take only 1.
More information about the Python-list
mailing list