2d lists

S

SunX

What is the best way to assign a 2d lists? Something like;

for i in range(10):
for j in range(10):
aList[j] = i*j

Thank you in advance.
 
J

Jeff Epler

Depending on your purposes, you may be looking for numarray[1].array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18],
[ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27],
[ 0, 4, 8, 12, 16, 20, 24, 28, 32, 36],
[ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45],
[ 0, 6, 12, 18, 24, 30, 36, 42, 48, 54],
[ 0, 7, 14, 21, 28, 35, 42, 49, 56, 63],
[ 0, 8, 16, 24, 32, 40, 48, 56, 64, 72],
[ 0, 9, 18, 27, 36, 45, 54, 63, 72, 81]])

A cheap trick is to use tuples as dict keys, which gets you a kind of
sparse N-dimensional array:
aDict = {}
for i in range(10):
for j in range(10):
aDict[i,j] = i*j

You can create your nested list with a nested list comprehension:
aList = [ [ i * j for i in range(10) ] for j in range(10) ]
if you really want lists.

Jeff
[1] http://www.google.com/search?q=numarray

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFAuRScJd01MZaTXX0RAtbbAJ4vKiSbqueKMx5x+v/1LaIlt2MXQACglJru
kRqHjPrwKlDt3m1X/dzsPoE=
=4Q5T
-----END PGP SIGNATURE-----
 
S

Shalabh Chaturvedi

SunX said:
What is the best way to assign a 2d lists? Something like;

for i in range(10):
for j in range(10):
aList[j] = i*j

Thank you in advance.


If you want a list of lists, you could do:

for i in range(10):
L = aList = []
for j in range(10):
L[j] = i*j

A completely different option is to use a dict for 2d data:

d = {}

for i in range(10):
for j in range(10):
d[(i,j)] = i*j

Notice the index is a tuple.
 
S

Shalabh Chaturvedi

Shalabh said:
SunX said:
What is the best way to assign a 2d lists? Something like;

for i in range(10):
for j in range(10):
aList[j] = i*j

Thank you in advance.



If you want a list of lists, you could do:

for i in range(10):
L = aList = []
for j in range(10):
L[j] = i*j


This is quite wrong. Here is a corrected version (this time tested :)

aList = []
for i in range(10):
L = []
aList.append(L)
for j in range(10):
L.append(i*j)
 
P

Piet van Oostrum

(e-mail address removed) (SunX) (S) wrote:

S> What is the best way to assign a 2d lists? Something like;
S> for i in range(10):
S> for j in range(10):
S> aList[j] = i*j

S> Thank you in advance.

Use list comprehension:
aList = [[i*j for j in range(10)] for i in range(10)]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,201
Messages
2,571,048
Members
47,651
Latest member
VeraPiw932

Latest Threads

Top