[Tutor] Calculating and returning possible combinations of elements from a given set
quasipedia at gmail.com
Wed Jul 28 00:53:02 CEST 2010
On Tue, 2010-07-27 at 23:31 +0100, Mark Lawrence wrote:
> On 27/07/2010 23:20, ZUXOXUS wrote:
> > Hi all pythoners
> > I've got a probably easy to answer question.
> > Say I've got a collections of strings, e.g.: 'man', 'bat', 'super', 'ultra'.
> > They are in a list, or in a sequence or whatever, say a bag of words
> > And now I want to know how many couples I can do with them, and I want the
> > program to show me the actual couples: 'manman', 'manbat', 'mansuper',
> > 'manultra', 'batbat', 'batman', 'batsuper', etc.
> > But hey, why building up new words from just two strings? I also want to
> > know the possible combinations of three words, four words, and perhaps, why
> > not, five words.
> > So, is it easy to do?
> > Sorry, I'm new in programing, and am probably far from being a math-master
> > I'm clueless, I think probably the code have some FOR I IN SEQUENCE... but
> > then what? I don't know how to say: take every element and paste it to
> > another one from the bag, and with another one, and with another one,...
> > If it's too complex, I dont need the whole code recipe, just need some
> > clues, or perhaps a useful link
> > Thank you very much in advance!
> > _______________________________________________
> > Tutor maillist - Tutor at python.org
> > To unsubscribe or change subscription options:
> > http://mail.python.org/mailman/listinfo/tutor
> The lazy way.
> Look for combinations().
>From the examples listed by the OP (see: "manbat", "batman") I actually
believe he is looking for the cartesian product.
The syntax should therefore be (DISCLAIMER: I am going by memory without
having the possibility of testing right now):
for prod in itertools.product(my_list_of_words, 2):
(The two as second parameter tells that you are wishing to have a
bi-dimensional product, with both axis having the same list of words.
See docs for more info)
More information about the Tutor