2013-02-04 33 views
5

Python için biraz yeniyim ve bu ve 'un length'u verilen bir 1D listesini 2B listesine dönüştürmek istiyorum.1D listesinden bir 2B listesi oluştur

Bir list=[0,1,2,3] diyelim ve bu listenin bir 2 by 2 matrisini yapmak istiyorum.

Nasıl alabilirim matrix [[0,1],[2,3]]width = 2, length = 2 list? Böyle

+0

Muhtemelen iki kopya - http://stackoverflow.com/q/3636344/1947535 –

cevap

14

deneyin şey:

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

Neden Python'u sevdiğimin bir başka örneği! Teşekkürler @root! – propjk007

4

Sana ziyade listelerin listesi yerine, matrisler/dizilerle çalışma amaca olduğunu numpy kullanmak gerektiğini düşünüyorum. Yani bu şekilde görünecektir: o gölgeler olarak

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

kaçının değişken list arayarak dahili isim.

+0

niçin numpy kökün yaklaşımından daha iyi kullanıyor? – PhoonOne

+2

2B yapısına ihtiyaç duyduğunuz şeye bağlıdır, ancak matrislerle neredeyse herhangi bir şekilde çalıştığınızda, numpy daha verimli, kullanışlı ve esnek olacaktır. – wim

İlgili konular