f



List of lists of lists of lists...

I would like to have a list of lists N times deep, and my solution is (in
pseudocode):

def deep(x):
  a=[x]
  return a

mylist=[]
for N: mylist=deep(mylist)

Is there a more elegant way to do it?

The maine idea is: from a list having the numbre of steps along N
dimensions, generate a list with an item at each possible point.

Example 1: N=2  list=[2,3]  result=[[1,2],[1,2],[1,2]]
Example 2: N=3  list=[3,1,2]  result=[[[1,2,3]],[[1,2,3]]]
-- 
Ángel Gutiérrez Rodríguez - agr@fq.uniovi.es
Instituto de Ciencia de los Materiales de Madrid - CSIC
SpLine - European Syncrothorn Radiation Facility - Grenoble - France

Postal adress: Departamento de Química Física y Analítica 
Universidad de Oviedo - c/Julián Clavería 8 33006 - Oviedo 
Asturias - Spain
E-mail: agr@fq.uniovi.es Telf.: +34-985103687
0
agr1 (9)
5/8/2006 10:56:29 AM
comp.lang.python 77058 articles. 6 followers. Post Follow

5 Replies
2379 Views

Similar Articles

[PageSpeed] 5

Ángel Gutiérrez Rodríguez wrote:
> I would like to have a list of lists N times deep, and my solution is (in
> pseudocode):
> 
> def deep(x):
>   a=[x]
>   return a

Hint : what's exactly the difference between deep(x) and [x] ?

> mylist=[]
> for N: mylist=deep(mylist)
> 
> Is there a more elegant way to do it?

for N:
  mylist = [mylist]


> The maine idea is: from a list having the numbre of steps along N
> dimensions, generate a list with an item at each possible point.
> 
> Example 1: N=2  list=[2,3]  result=[[1,2],[1,2],[1,2]]
> Example 2: N=3  list=[3,1,2]  result=[[[1,2,3]],[[1,2,3]]]

I'm afraid I don't understand. Could you forgive my stupidity and
re-explain this a bit more clearly ?

-- 
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb@xiludom.gro'.split('@')])"
0
onurb (1416)
5/9/2006 12:16:47 PM
Ángel Gutiérrez Rodríguez wrote:
> I would like to have a list of lists N times deep, and my solution is (in
> pseudocode):
> 
> def deep(x):
>   a=[x]
>   return a
> 
> mylist=[]
> for N: mylist=deep(mylist)
> 
> Is there a more elegant way to do it?
> 
> The maine idea is: from a list having the numbre of steps along N
> dimensions, generate a list with an item at each possible point.
> 
> Example 1: N=2  list=[2,3]  result=[[1,2],[1,2],[1,2]]
> Example 2: N=3  list=[3,1,2]  result=[[[1,2,3]],[[1,2,3]]]

Numarray does this sort of thing, but you have to familiarize yourself 
with its indexing conventions:

py> import numarray
py> numarray.ones((3,2))
array([[1, 1],
        [1, 1],
        [1, 1]])
py> numarray.ones((1,2,3))
array([[[1, 1, 1],
         [1, 1, 1]]])

James

-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
0
jstroud (199)
5/10/2006 1:10:44 AM
James Stroud wrote:

> Numarray does this sort of thing, but you have to familiarize yourself 
> with its indexing conventions:
> 
> py> import numarray
> py> numarray.ones((3,2))
> array([[1, 1],
>         [1, 1],
>         [1, 1]])
> py> numarray.ones((1,2,3))
> array([[[1, 1, 1],
>          [1, 1, 1]]])

numpy is the successor to numarray, so if you are just starting with arrays,
please get started with numpy. It should also be noted that numpy can create
arrays of objects as well as arrays of numbers.

In [1]: from numpy import *

In [2]: empty((1,2,3), dtype=object)
Out[2]:
array([[[None, None, None],
        [None, None, None]]], dtype=object)

http://numeric.scipy.org

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

0
robert.kern (1692)
5/10/2006 1:26:47 AM
bruno at modulix wrote:

> for N:
>   mylist = [mylist]
> 
Right that!

> I'm afraid I don't understand. Could you forgive my stupidity and
> re-explain this a bit more clearly ?
> 
No need to. Former solution worked fine. Thanks!
-- 
Ángel Gutiérrez Rodríguez - agr@fq.uniovi.es
Instituto de Ciencia de los Materiales de Madrid - CSIC
SpLine - European Syncrothorn Radiation Facility - Grenoble - France

Postal adress: Departamento de Química Física y Analítica 
Universidad de Oviedo - c/Julián Clavería 8 33006 - Oviedo 
Asturias - Spain
E-mail: agr@fq.uniovi.es Telf.: +34-985103687
0
agr1 (9)
5/15/2006 11:44:57 AM
Robert Kern wrote:
> James Stroud wrote:
> http://numeric.scipy.org
> 
Thanks! That's anotehr solution, yes!
-- 
Ángel Gutiérrez Rodríguez - agr@fq.uniovi.es
Instituto de Ciencia de los Materiales de Madrid - CSIC
SpLine - European Syncrothorn Radiation Facility - Grenoble - France

Postal adress: Departamento de Química Física y Analítica 
Universidad de Oviedo - c/Julián Clavería 8 33006 - Oviedo 
Asturias - Spain
E-mail: agr@fq.uniovi.es Telf.: +34-985103687
0
agr1 (9)
5/15/2006 11:47:33 AM
Reply: