Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > proposition for syntax for initialisation of multidimensional lists

Reply
Thread Tools

proposition for syntax for initialisation of multidimensional lists

 
 
Nils Grimsmo
Guest
Posts: n/a
 
      10-12-2004
i always have trouble explaining why creation of multidimensional lists
is not as straight forward as it could be in python. list comprehensions
are ugly if you are new to the language. i really would like to see it
made easy. i propose using tuples in the same way as integers are now.
example:

>>> [0] * (2,3,4)

[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0,
0], [0, 0, 0, 0]]]

this is even less "mathematically bad" syntax than multiplication with
an integer, as multiplication of vectors is only well defined if they
are of the same length. [1] * 7 could be interpreted as a vector of
length one multiplied with a scalar 7 resulting in the vector [7]. (this
was not meant as a proposition to remove the current syntax.)

i would be easy to implement:

class mylist(list):
def __mul__(self, dims):
if dims.__class__ == (()).__class__:
if len(dims) > 1:
return [self.__mul__(dims[1:]) for i in range(dims[0])]
else:
return list.__mul__(self, dims[0])
else:
return list.__mul__(self, dims)

li = mylist()
li.append(0)
print li * (2,3,4)


what do you think?


klem fra nils
 
Reply With Quote
 
 
 
 
Michael Hoffman
Guest
Posts: n/a
 
      10-12-2004
Nils Grimsmo wrote:

> i always have trouble explaining why creation of multidimensional lists
> is not as straight forward as it could be in python.


Maybe because that is not really a sensible thing to do with the list
data structure, which can change in length after instantiation?

> >>> [0] * (2,3,4)

> [[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0,
> 0], [0, 0, 0, 0]]]
>
> [SNIP]
>
> what do you think?


I think I will continue doing this:

>>> import numarray
>>> numarray.zeros((2,3,4))

array([[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]],

[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]])
--
Michael Hoffman
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Can you use strings in template initialisation lists? Adam Nielsen C++ 13 01-20-2009 06:08 AM
Initialisation of reference vs. initialisation of reference member Tim Clacy C++ 8 05-30-2006 06:14 PM
List of lists of lists of lists... =?UTF-8?B?w4FuZ2VsIEd1dGnDqXJyZXogUm9kcsOtZ3Vleg==?= Python 5 05-15-2006 11:47 AM
RE: proposition for syntax for initialisation of multidimensionallists Batista, Facundo Python 2 10-12-2004 09:16 PM
multidimensional lists =?iso-8859-1?q?Orla=20O'Sullivan?= Python 1 10-07-2003 04:35 PM



Advertisments