Arrays in python

Alex Martelli aleaxit at yahoo.com
Sat Sep 2 15:30:16 EDT 2000


"Marcus" <talos at algonet.se> wrote in message
news:39B1467D.9CA098FC at algonet.se...
> Hello, I am but a beginner in the language and I have a small question.
> Python seem to have a strange syntax concerning arrays (atleast for a C
> programmer).

The Python array module only holds homogeneous arrays of elementary
types, not object instances.  So, for your purpose, you're more likely to
want a Python *list* (which is a builtin Python type), not a Python
*array* (as supplied by the array module, with "import array").

> What i wanna do is simply something like:
>
> array[0] = open("/home/talos/somefile");

To be able to do this, array must be a list with 1 or more elements
(not an empty list).  There are many ways to make it so, such as
    array = [None]
a 1-element list with a value of None.  After that, you can write
the above assignment (the final semicolon is accepted, though it's
not required and no Python programmer would dream of using it).


> and then be able to use it like so:
>
> line = array[0].readline;

This would set 'line' to the *function* ("bound method") readline
of the file object -- exactly like in C.

Exactly like in C, if you want to *CALL* that function (and set
"line" to the RESULT of the call), you need to add parentheses:

    line = array[0].readline()

Don't tell me that the need to use parentheses to call a function
(rather than just taking a reference to it) is "strange syntax ...
for a C programmer"?!  It's ALWAYS been like that in C.

> print line,;

You can do that (again, the ending semicolon is peculiar, but
if you insist you are allowed to use it in Python).


> How is this done in python?

Binding the 'array' variable to a list of 1 or more elements, which
is all you need to add "array"-wise to your code, can be done in
many ways, depending on how long you want the list to be and
what initial elements you want to be there.

For a dummy-initial-elements list of N elements, for example,
the most natural idiom is:

    array=[None]*N


If you want to start with an EMPTY list,

    array=[]

but then you can't refer to a 0-th element until you add it, e.g.
with the append method:

    array.append(open("/a/file"))


Alex






More information about the Python-list mailing list