[Python Edinburgh] How to do dynamic nesting of loops

Magnus Hagdorn magnus.hagdorn at marsupium.org
Tue Nov 18 16:43:53 CET 2014


well, if you have some tree like or more generally graph like data 
structure I'd use a data type that reflects this fact. I have been using 
the networkx python module for handling graphs.
cheers
magi


On 18/11/14 15:17, James Doig wrote:
> Hi Doug,
> Lists nested like this ( e.g: [1, [2, 3, [4 ,5 ,6 ,7]]] ) can be thought
> of as "tree" data structures.... Just incase you wanted to categorise
> the problem to aid future googling :)
>
> Cheers,
>
> James
>
> On 18 November 2014 12:56, Magnus Hagdorn <magnus.hagdorn at marsupium.org
> <mailto:magnus.hagdorn at marsupium.org>> wrote:
>
>     Hi Doug,
>     I think you will need to write an iterator which will return a tuple
>     of indicies.
>
>     How do you decide on the number of nested loops?
>
>     Your program might looks something like
>
>     def myIterator(some,args):
>        white some condition:
>            do some stuff to figure out what to do
>            yield (i,j,k,...)
>
>     for indicies in myIterator(...):
>          do something with the tuple of indicies
>
>     Hope this gives you a starting point
>
>     Cheers
>     magi
>
>
>
>     On 18/11/14 12:08, Douglas Houston wrote:
>
>         Hi all,
>
>         I'm a bit stuck with this so maybe someone can help me.
>
>         I'm writing a little program that needs to iterate through several
>         nested 'for' loops. However, the number of loops (and therefore the
>         depth of the nesting) cannot be predetermined.
>
>         I've read that lots of nested loops are bad form anyway, and
>         that "you
>         should do it with functions instead".
>
>         However I still can't work out how to set the number dynamically.
>
>
>         for ((l=0; l<10; l++)); do
>         ​ ​
>            for ((m=0; m<10; m++))
>         ​;​
>         do
>         ​ ​
>         for (n=0; n<10; n++)); do
>         ​ ​
>         something
>         ​ that uses l, m and n​
>
>               done
>             done
>         done
>
>         So this is what it needs to look like if nest_depth=3
>
>         But how do I write a program that iterates something
>         ​ for nest_depth=4 (which in this case would use l, m, n and o)​
>         , or any
>         other number (which can't be predicted)?
>
>         cheers,
>         Doug
>
>         PS I didn't write this in Python just for speed, but feel free
>         to reply
>         in Python if you want - the practice would be good for me.
>
>
>         _________________________________________________
>         Edinburgh mailing list
>         Edinburgh at python.org <mailto:Edinburgh at python.org>
>         https://mail.python.org/__mailman/listinfo/edinburgh
>         <https://mail.python.org/mailman/listinfo/edinburgh>
>
>
>     _________________________________________________
>     Edinburgh mailing list
>     Edinburgh at python.org <mailto:Edinburgh at python.org>
>     https://mail.python.org/__mailman/listinfo/edinburgh
>     <https://mail.python.org/mailman/listinfo/edinburgh>
>
>
>
>
> _______________________________________________
> Edinburgh mailing list
> Edinburgh at python.org
> https://mail.python.org/mailman/listinfo/edinburgh
>



More information about the Edinburgh mailing list