combination function in python

Anton Vredegoor anton.vredegoor at gmail.com
Sun Apr 15 17:16:21 EDT 2007


mensanator at aol.com wrote:

>> We're getting closer and closer to something I already posted a few
>> times here. This implementation was unfortunate because I consistently
>> used an uncommon name for it so people couldn't easily find it
> 
> But then, who's looking for it?

The OP was trying to find it in the docs, assuming it was some kind of 
builtin function. I can see the logic of that and I can also see the 
logic of including some other smallish functions like for example fac. 
Failing that, the next recourse would be the Internet, or a Usenet 
search but that would imply well named Usenet posts and function names.

>> (mea culpa), and maybe also because it uses the despised reduce builtin.
>>
>> def noverk(n,k):
>> � � �return reduce(lambda a,b: a*(n-b)/(b+1),xrange(k),1)

This is a rather concise function which has the added advantage that it 
returns 0 when k>n.

>> BTW I hereby give up the strange name for this and request a better name
>> that everybody will use so there will be no confusion anymore. Maybe
>> comb(n,k) ?
> 
> No, that name's already used by gmpy. And a single
> function doesn't replace all of gmpy's other
> functionality, many of which are needed in the
> same applications where comb() is used, so there's
> really no need for your function.

Actually, by proposing comb I am *honoring* gmpy and I'm also complying 
with it. In Python we use namespaces to differentiate between such 
things. You might want to read the documentation about it some time.

> Your time is better spent applying the tools provided
> by gmpy rather than trying to re-invent the wheel.

Please let me be the judge of how to spend my time. In this case it 
seems rather unjustified to introduce dependencies on external modules 
when only a few functions are needed. Since I'm also interested in the 
functions themselves -in this case- I'd rather have a few lines of code 
in my source than importing an optimized code library. There *are* 
situations where such things are completely justified, but I don't think 
this is one of them. You could take it up with the gmpy author and 
induce him to get gmpy included in the standard distro if you are so 
inclined.

A.



More information about the Python-list mailing list