471,055 Members | 2,059 Online

# 2d lists

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

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

Jul 18 '05 #1
4 2138
Depending on your purposes, you may be looking for numarray[1].
import numarray
anArray = numarray.fromfunction(lambda x, y: x*y, (10,10))
anArray

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:
for i in range(10):
for j in range(10):

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

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

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

Jul 18 '05 #2
SunX wrote:
What is the best way to assign a 2d lists? Something like;

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

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

for i in range(10):
L = aList[i] = []
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.

--
Shalabh
Jul 18 '05 #3
Shalabh Chaturvedi wrote:
SunX wrote:
What is the best way to assign a 2d lists? Something like;

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

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

for i in range(10):
L = aList[i] = []
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)

--
Shalabh
Jul 18 '05 #4
>>>>> xi*********@yahoo.com (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[i][j] = i*j

Use list comprehension:
aList = [[i*j for j in range(10)] for i in range(10)]
--
Piet van Oostrum <pi**@cs.uu.nl>
URL: http://www.cs.uu.nl/~piet [PGP]
Private email: P.***********@hccnet.nl
Jul 18 '05 #5

### This discussion thread is closed

Replies have been disabled for this discussion.