# How to make arrays from Lists

Discussion in 'Python' started by gc_ottawa@yahoo.ca, Nov 12, 2008.

1. ### Guest

I want to construct a 2-dimensional array from a List but I cannot
find a simple way of changing any element. For example, construct a
3x3 array like this:-
>>> x=[0,0,0]

x=[x]*3
this produces [[0,0,0],[0,0,0],[0,0,0]. So far so good.
How do I change the value of any element to produce (say)
[[99,0,0],[0,0,0],[0,0,0]] ?

gordc

, Nov 12, 2008

2. ### Guest

gc_ott:
> How do I change the value of any element to produce (say)
> [[99,0,0],[0,0,0],[0,0,0]] ?
>
> gordc

To create a 2D list, that is a list of lists:
x = [[0] * ncols for i in nrows]
(Don't do what you were doing, because you end with many references to
the same list, and that will give you troubles.)

To set an item you do just:
x[0][0] = 99

Bye,
bearophile

, Nov 12, 2008

3. ### Guest

On Nov 11, 7:48 pm, wrote:
> gc_ott:
>
> > How do I change the value of any element to produce (say)
> > [[99,0,0],[0,0,0],[0,0,0]] ?

>
> > gordc

>
> To create a 2D list, that is a list of lists:
> x = [[0] * ncols for i in nrows]
> (Don't do what you were doing, because you end with many references to
> the same list, and that will give you troubles.)
>
> To set an item you do just:
> x[0][0] = 99
>
> Bye,
> bearophile

Many thanks, I don't think I would ever 'discovered' this.
gordc

, Nov 12, 2008
4. ### Robert KernGuest

wrote:
> On Nov 11, 7:48 pm, wrote:
>> gc_ott:
>>
>>> How do I change the value of any element to produce (say)
>>> [[99,0,0],[0,0,0],[0,0,0]] ?
>>> gordc

>> To create a 2D list, that is a list of lists:
>> x = [[0] * ncols for i in nrows]
>> (Don't do what you were doing, because you end with many references to
>> the same list, and that will give you troubles.)
>>
>> To set an item you do just:
>> x[0][0] = 99
>>
>> Bye,
>> bearophile

>
> Many thanks, I don't think I would ever 'discovered' this.

If you are trying to emulate numerical arrays, you may want to use numpy, instead.

http://numpy.scipy.org/

import numpy
x = numpy.zeros([3,3], dtype=int)
x[0,0] = 99

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

Robert Kern, Nov 12, 2008
5. ### Gabriel GenellinaGuest

Gabriel Genellina, Nov 15, 2008