Python arrays and sting formatting options

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Tue Sep 30 10:34:31 EDT 2008


On Tue, 30 Sep 2008 15:42:58 +0200, Ivan Reborin wrote:

> On 30 Sep 2008 07:07:52 GMT, Marc 'BlackJack' Rintsch <bj_666 at gmx.net>
> wrote:
>>=====
>>from __future__ import with_statement from functools import partial
>>from itertools import islice
>>from pprint import pprint
>>
>>
>>def read_group(lines, count):
>>    return [map(int, s.split()) for s in islice(lines, count)]
>>
>>def main():
>>    with open('test.txt') as lines:
>>        lines = (line for line in lines if line.strip())
>>        result = list(iter(partial(read_group, lines, 3), list()))
>>    pprint(result, width=30)
>>
>>if __name__ == '__main__':
>>    main()
>>=====
> 
> I'm afraid I must admit I find the code above totally uncomprehesible (I
> can't even see where the array here is mentioned - "result"?) and
> inpractical for any kind of engineering practice I had in mind.

Learn Python then to understand that code.  ;-)

There is no array.  The data type is called "list" in Python, so `result` 
is a nested list.  And in Python it quite unusual to build lists by 
creating them with the final size filled with place holder objects and 
then fill the real values in.  Instead lists are typically created by 
appending values to existing lists, using list comprehension or the
`list()` function with some iterable object.

Typical Python code tries to minimize the use of index variables.  Python 
is not Fortran (or C, or Pascal, …).

> Does python, perchance, have some wrapper functions or something, which
> would allow one to load an array in a more natural "technical" way ?
> Like something mentioned above in my post (now deleted) ?
> 
> Also, is there a way to change counter for arrays to go from 0 to 1 ?

You can write your own sequence type but that would be odd because the 
rest of the language expects zero as the first index, so you will be 
constantly fighting the language by adding or subtracting 1 all the time 
at the "border" between your custom sequence type and the the rest of 
Python.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list