Tuple Comprehension ???
Thomas Passin
list1 at tompassin.net
Tue Feb 21 21:57:07 EST 2023
On 2/21/2023 8:52 PM, Hen Hanna wrote:
> 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.
... and that one has to be an iterable.
More information about the Python-list
mailing list