Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #30428

Re: howto handle nested for

From Neil Cerutti <neilc@norwich.edu>
Newsgroups comp.lang.python
Subject Re: howto handle nested for
Date 2012-09-28 20:38 +0000
Organization Norwich University
Message-ID <acmg70F189sU1@mid.individual.net> (permalink)
References <k44cr4$jtj$1@ger.gmane.org> <mailman.1557.1348844688.27098.python-list@python.org>

Show all headers | View raw


On 2012-09-28, Laszlo Nagy <gandalf@shopzeus.com> wrote:
> In your example, it seem that the iterable of the for loop is
> always the same: range(n_sysms). It seems to be a number. Is
> that true? If that is so, then here is something useful:
>
> import copy
>
> class MultiLevelIterator(object):
>      def __init__(self,levels,n):
>          assert(levels>0)
>          assert(n>0)
>          self.levels = levels
>          self.values = [0]*levels
>          self.n = n
>
>      def __iter__(self):
>          return self
>
>      def next(self):
>          res = copy.copy(self.values)
>          idx = self.levels-1
>          while idx>=0:
>              self.values[idx]+=1
>              if self.values[idx]>=self.n:
>                  self.values[idx] = 0
>                  idx-=1
>              else:
>                  return res
>          raise StopIteration
>
> i = MultiLevelIterator(2,3)
> for values in i:
>      print values
>
> This will print:
>
> [0, 0]
> [0, 1]
> [0, 2]
> [1, 0]
> [1, 1]
> [1, 2]
> [2, 0]
> [2, 1]

It looks like you might have missed the last one. Also, be sure
to check itertools for occasionally for cool stuff like this.

>>> for values in itertools.product(range(3), repeat=2):
...   print(values)
...
(0, 0)
(0, 1)
(0, 2)
(1, 0)
(1, 1)
(1, 2)
(2, 0)
(2, 1)
(2, 2)

-- 
Neil Cerutti

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Re: howto handle nested for Laszlo Nagy <gandalf@shopzeus.com> - 2012-09-28 17:04 +0200
  Re: howto handle nested for Neil Cerutti <neilc@norwich.edu> - 2012-09-28 20:38 +0000

csiph-web