[Tutor] variable numbers of for loops
Mac Ryan
quasipedia at gmail.com
Tue Nov 23 15:01:40 CET 2010
On Tue, 23 Nov 2010 13:16:46 +0000
Jose Amoreira <ljmamoreira at gmail.com> wrote:
> I read somewhere that for any recursive algorithm there is a
> sequential one that is equivalent
> [...]
> Is there a more straightforward way of solving my specific problem
> or, better yet, a general solution to the need of a variable number
> of for loops?
I am not 100% sure I got the terms of your problem and I am neither an
official tutor of this list, so disregard my comment if it is
irrelevant...
...yet, the way I normally understand the first sentence I quoted is
that any recursive solution can be written iteratively, or in other
words "flat" (i.e. having the same procedure called by the main program
X number of times, rather than having the procedure calling itself, so
effectively nesting itself X number of times).
The code you wrote generates programs like:
for l0 in alphabet:
for l1 in alphabet:
for l2 in alphabet:
word = "".join([eval("l"+str(i)) for i in range(n)])
listOfWords.append(word)
which are recursive in essence (although the recursion is hard-coded
rather than dynamic). This is not bad (problems in the domain of
combinatorics - like yours - get normally solved recursively) but I
can't imagine what would the advantage of this code over dynamic
recursion.
As for a more straightforward way to solve your specific problem: I
would suggest you take a look to the combinatoric generators in the
itertools module (http://docs.python.org/library/itertools.html).
HTH at least a bit!
Mac.
More information about the Tutor
mailing list