newb loop problem
Sion Arrowsmith
siona at chiark.greenend.org.uk
Wed Aug 13 08:46:32 EDT 2008
Dave <NunezD at gmail.com> wrote:
>hitNum = 0
>stopCnt = 6 + hitNum
>offSet = 5
>
>for i in range(0,10,1):
The step argument to range defaults to 1: it's tidier to omit it.
Similarly, the start argument defaults to 0, so you can drop that too.
for i in range(10):
> for x in range(hitNum,len(inLst), 1):
> print hitNum, stopCnt
hitNum and stopCnt are constant in this loop: if you care about
this print statement, move it into the outer loop and stop yourself
drowning in output.
> if x == stopCnt: break
If you want to exit the inner loop when x == stopCnt, why not make
that condition part of the loop construct?
for x in range(hitNum, stopCnt):
That said, if you ever see "for i in range(len(lst))" *immediately*
replace it by "for i, x in enumerate(lst)", then go through to body
to see if you really need that i, and if not use "for x in lst",
with slicing if the range is more complex than range(len(lst)). As
you can do here:
for x in inLst[hitNum:stopCnt]:
hitLst.append(x)
And if all you're doing in a for loop is appending to one list from
another, that's just what list.extend does:
hitLst.extend(inLst[hitNum:stopCnt])
> hitNum +=offSet
> stopCnt+=offSet
Finally, that i in the outer loop isn't being used anywhere. Why
don't you just loop over hitNum? And noticing that stopCnt is
increasing in lock-step with hitNum:
offset = 5
for hitNum in range(0, 10*offset, offset):
hitLst.extend(inLst[hitNum:hitNum+6]
--
\S -- siona at chiark.greenend.org.uk -- http://www.chaos.org.uk/~sion/
"Frankly I have no feelings towards penguins one way or the other"
-- Arthur C. Clarke
her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump
More information about the Python-list
mailing list