performance question: dictionary or list, float or string?

bkamrani at gmail.com bkamrani at gmail.com
Thu Dec 4 11:12:44 CET 2008


About the piece of code you posted, there is something I don't
understand.

        for i, line in data:

where data is a file object. Is it legal to write that?
I believe it results in "too many values to unpack" or do I miss
something?

/Ben

On Dec 4, 10:26 am, bkamr... at gmail.com wrote:
> Matt, really thanks for your comments!
> Even thogh it was not a direct answer to my questions,
> I like your coding style very much and I think you have a good point.
>
> About the number of line in the file, because I get that info from
> another
> in advance. Therefore I thought it could be hard coded.
>
> BTW, could you recommend a book or a note on points you have mentioned
> so that I can learn more like that?
>
> Thanks,
> /Ben
>
> > # this is just bad style in python:
> > line = fil.next(); spl = line.split()
> > # better written
> > spl = fil.next().split()
>
> > I would just do it this way:
>
> > def read_as_list(data, regions=25, maxlines=20000):
> >     # If data is a filename, open the file. If it is a file
> >     # object or any sequence of 'lines' it should just work.
>
> >     file_opened = False
> >     if isinstance(data, basestring):
> >         data = open(data, 'r')
> >         file_opened = True
>
> >     forces = [[] for _ in xrange(regions)]
> >     try:
> >         for i, line in data:
> >             if i == maxlines:
> >                 break
> >             forces[i % 25].append(line.split())
> >     finally:
> >         if file_opened:
> >             f.close()
> >     return forces
>
> > Matt
>
>




More information about the Python-list mailing list