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


Groups > comp.lang.python > #44399 > unrolled thread

Re: Nested For loop not running full

Started byPeter Otten <__peter__@web.de>
First post2013-04-26 11:09 +0200
Last post2013-04-26 11:09 +0200
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

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

#44399 — Re: Nested For loop not running full

FromPeter Otten <__peter__@web.de>
Date2013-04-26 11:09 +0200
SubjectRe: Nested For loop not running full
Message-ID<mailman.1088.1366967353.3114.python-list@python.org>
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.

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web