Equivalent string.find method for a list of strings
jeremit0
jeremit0 at gmail.com
Fri Apr 8 22:48:22 EDT 2005
Steven Bethard wrote:
> jeremit0 wrote:
>
>> Steve Holden wrote:
>>
>>> If you want line numbers,. of course, then you can use
>>>
>>> for linenum, line in enumerate(myfile.readlines()):
>>> ...
>>>
>>> Remember that true to Python's philosophy numbering will start at zero.
>>>
>> Is this any better than:
>>
>> lines = myfile.readlines()
>> for linenum in xrange(len(lines)):
>> # Do stuff with lines[linenum] ...
>
>
> Well, if you use lines[linenum] often in that code, it'll be more
> efficient to use enumerate (or bind lines[linenum] to a name, which is
> basically what enumerate is doing for you). Given the file test.py:
>
> --------------------------------------------------
> def elines(lines):
> for linenum, line in enumerate(lines):
> x = linenum
> y = line
> z = line
>
> def xlines(lines):
> for linenum in xrange(len(lines)):
> x = linenum
> y = lines[linenum]
> z = lines[linenum]
>
> --------------------------------------------------
>
> Here's what I get with timeit:
>
> [D:\Steve]$ python -m timeit -s"lines = range(10000); import test"
> "test.elines(lines)"
> 100 loops, best of 3: 2.85 msec per loop
>
> [D:\Steve]$ python -m timeit -s"lines = range(10000); import test"
> "test.xlines(lines)"
> 100 loops, best of 3: 3.18 msec per loop
>
> The other thing worth noting is that enumerate will work with any
> iterable, while your xrange technique won't. Try:
> for linenum, line in enumerate(myfile):
> ...
> and
> for linenum in xrange(len(myfile)):
> line = myfile[linenum]
> ...
> and see what kind of cool errors you get with the xrange solution. :)
>
> STeVe
Wow that is significant evidence. Thanks for doing that.
This is the first time I have posted to this list. I really like it for
two reasons. 1) There are lots of people who are willing to help out
and 2) there are so many ideas now I can pick which one I like best. I
think I am leaning towards using enumerate.
Thanks,
Jeremy
More information about the Python-list
mailing list