simultaneous assignment

Boris Borcic bborcic at gmail.com
Tue May 2 16:19:39 EDT 2006


Grant Edwards wrote:
> On 2006-05-02, Boris Borcic <bborcic at gmail.com> wrote:
>> Grant Edwards wrote:
>>> Python knows how to count.  :)
>>>
>>> def countFalse(seq):
>>>     return len([v for v in seq if not v])
>>>
>>> def countTrue(seq):
>>>     return len([v for v in seq if v])
>>>
>>> def truth_test(seq):
>>>     return countTrue(seq) == 1
>>>
>> I'd suggest the more direct
>>
>> def countFalse(seq) :
>>      return sum(1 for v in seq if not v)
> 
> I guess I don't see how that is more direct.
> 
> If you want to know how many items are in a seqneuce, you call
> len().  

sum doesn't construct a sequence

> 
> That's what it's for.
> 
> The number of objects in a list is returned in O(1) time by
> len(sequence). 

yeah, but you need to construst the list first, and that isn't O(1) neither in 
time or space.

> 
> Converting that list to a list of 1's

that's not what my suggestion is doing

and then summing the 1's
> is O(N).
> 



More information about the Python-list mailing list