| Store | Cart

Question on loops

From: Sean Ross <sro...@connectmail.carleton.ca>
Sun, 7 Mar 2004 21:35:03 -0500
"Daniel H Neilson" <google at neilson.sent.com> wrote in message
news:e0bff448.0403071748.352848e2 at posting.google.com...
[snip]
> I need to take> another action every 100 lines. Currently I am using something to the> effect of:>> i = 0> for line in file:>     if i == 100:>         action>         i = 0>     else:>         i += 1>     process(line)>> But this doesn't feel like a very python-esque solution to me, and is> not very elegant in any case. What would be a better way to do it?
[snip]

Hi

If you're using Python 2.3+ you can use enumerate() and a little
modulo arithmetic:

for index, line in enumerate(file):
    if (index+1)%100 == 0:
        action
    process(line)

enumerate() generates (index, value) pairs for an iterable (in this case,
your file), so you don't need to maintain your own counter (i).

The modulo arithmetic ((index+1)%100 == 0) lets you perform
your action every 100 lines [*] (and avoids performing your action
on the first iteration when index == 0).

HTH,
Sean




[*]
In your original code, you're actually doing your action every 101
lines - notice:
    len([0,1,2,3,4, ..., 98,99]) == 100
    len([0,1,2,3,4, ..., 98,99,100]) == 101

Recent Messages in this Thread
Daniel H Neilson Mar 08, 2004 01:48 am
Sean Ross Mar 08, 2004 02:35 am
Messages in this thread