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


Groups > comp.lang.python > #44399

Re: Nested For loop not running full

From Peter Otten <__peter__@web.de>
Subject Re: Nested For loop not running full
Date 2013-04-26 11:09 +0200
Organization None
References <CAFqGZRF4s_+9R4qDZTmFD7OWWMTn_YnhjKNMh8gY97ng5tyr9g@mail.gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.1088.1366967353.3114.python-list@python.org> (permalink)

Show all headers | View raw


inshu chauhan wrote:

> I have this part of my code where I am trying to traverse over an image by
> running a for loop for both x and y co-ordinate axis. But the loop is
> terminating by just reading first pixel. Can think of a reason why this is
> happening ?
> 
> The code is:
> for sy in xrange(0, segimage.height):
>     for sx in xrange(0, segimage.width):
>             if segimage[sy,sx] == (0.0, 0.0, 0.0):
>                 continue
>             else:
>                 seg_color = segimage[sy,sx]
>                 blue = int(seg_color[0])
>                 green = int(seg_color[1])
>                 red = int(seg_color[2])
>                 reg_num = blue + 256 * green + 65536 * red
>                 for l in f:
>                     sp = l.split(",")
>                     if len(sp) == 14:
>                         print sy, sx  # for checking which pixel its
> reading currently
>                         print reg_num, sp[0]  # for checking whats
> happening
>                         if reg_num == int(sp[0].strip()):
>                             print reg_num, sp[0].strip() # for checking
> whats happening
>                             classification = int(sp[13].strip())
> 
> 
> The inside "for loop" is for reading a csv format file from which I am
> extracting some information.

My crystal ball says that the 'for sy...' and 'for sx...' loops are running 
to completion, but you don't get the coordinates printed because you put 
them into the 'for l in f' loop which will only run once.

The quick and dirty fix is to replace

f = open(...)

in the code you are not showing with 

f == list(open(...))

The reasonable thing to do is of course to move the preprocessing (e.g. csv-
parsing) out of the sy and sx loops.

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


Thread

Re: Nested For loop not running full Peter Otten <__peter__@web.de> - 2013-04-26 11:09 +0200

csiph-web