2013-02-04 6 views
5

Ich bin ein wenig neu in Python und ich möchte eine 1D-Liste in eine 2D-Liste konvertieren, die width und length dieser matrix.Erstellen Sie eine 2D-Liste aus 1D-Liste

Sagen Sie, ich habe eine list=[0,1,2,3] und ich möchte eine 2 by 2 Matrix dieser Liste machen.

Wie bekomme ich matrix [[0,1],[2,3]]width = 2, length = 2 aus der list?

+0

Wahrscheinlich duplizieren - http://Stackoverflow.com/q/3636344/1947535 –

Antwort

14

versuchen, etwas wie folgt aus:

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

Ein weiteres Beispiel, warum ich Python liebe! Vielen Dank @root! – propjk007

4

Ich glaube, Sie numpy verwenden sollten, die für die Arbeit mit Matrizen/Arrays, anstatt eine Liste von Listen speziell gebaut ist. Das würde so aussehen:

>>> 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) 

Vermeiden Sie eine Variable list aufrufen, wie es der integrierten Namen Schatten.

+0

Warum wird numpy besser als der Ansatz von root verwendet? – PhoonOne

+2

Es hängt davon ab, wofür Sie eine 2D-Struktur benötigen, aber wenn Sie mit Matrizen in fast jeder Hinsicht arbeiten, wird numpy effizienter, bequemer und flexibler. – wim

Verwandte Themen