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