Velocity Reviews > How to make arrays from Lists

# How to make arrays from Lists

gc_ottawa@yahoo.ca
Guest
Posts: n/a

 11-12-2008
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

bearophileHUGS@lycos.com
Guest
Posts: n/a

 11-12-2008
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

gc_ottawa@yahoo.ca
Guest
Posts: n/a

 11-12-2008
On Nov 11, 7:48*pm, (E-Mail Removed) 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

Robert Kern
Guest
Posts: n/a

 11-12-2008
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> On Nov 11, 7:48 pm, (E-Mail Removed) 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
an underlying truth."
-- Umberto Eco

Gabriel Genellina
Guest
Posts: n/a

 11-15-2008
En Tue, 11 Nov 2008 23:09:25 -0200, <(E-Mail Removed)> escribió:
> On Nov 11, 7:48*pm, (E-Mail Removed) wrote:

>> To create a 2D list, that is a list of lists:
>> x = [[0] * ncols for i in nrows]

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

http://www.python.org/doc/faq/progra...mensional-list

--
Gabriel Genellina