2013-02-04 19 views
5

Sono un po 'nuovo per Python e voglio convertire un elenco 1D in un elenco 2D, dato il width e length di questo matrix.Creare un elenco 2D dall'elenco 1D

Dire che ho un list=[0,1,2,3] e voglio creare una matrice 2 by 2 di questo elenco.

Come posso ottenere matrix [[0,1],[2,3]]width = 2, length = 2 fuori dalla list?

+0

Probabile duplicato - http://stackoverflow.com/q/3636344/1947535 –

risposta

14

provare qualcosa di simile:

In [53]: l = [0,1,2,3] 

In [54]: def to_matrix(l, n): 
    ...:  return [l[i:i+n] for i in xrange(0, len(l), n)] 

In [55]: to_matrix(l,2) 
Out[55]: [[0, 1], [2, 3]] 
+0

Un altro esempio del perché amo Python! Grazie @root! – propjk007

4

Penso che si dovrebbe usare NumPy, che è costruito appositamente per lavorare con le matrici/array, piuttosto che una lista di liste. Che sarebbe simile a questa:

>>> import numpy as np 
>>> list_ = [0,1,2,3] 
>>> a = np.array(list_).reshape(2,2) 
>>> a 
array([[0, 1], 
     [2, 3]]) 
>>> a.shape 
(2, 2) 

evitare di chiamare una variabile list come ombre il built-in nome.

+0

perché usare numpy meglio dell'approccio di root? – PhoonOne

+2

Dipende da cosa è necessaria la struttura 2D, ma quando si lavora con le matrici in qualsiasi modo, numpy sarà più efficiente, conveniente e flessibile. – wim

Problemi correlati