471,055 Members | 2,059 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,055 software developers and data experts.

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

Thank you in advance.
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:
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-----

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

Thank you in advance.


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

Thank you in advance.

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

S> Thank you in advance.

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.

Similar topics

9 posts views Thread by Dave H | last post: by
41 posts views Thread by Odd-R. | last post: by
3 posts views Thread by s_subbarayan | last post: by
17 posts views Thread by Gal Diskin | last post: by
16 posts views Thread by Michael M. | last post: by
51 posts views Thread by Joerg Schoen | last post: by
3 posts views Thread by =?Utf-8?B?QWRhbSBN?= | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.