2015-08-21 198 views
1

我想在那裏其值從0開始到n從一系列的唯一值創建一個多維列表

像這樣

[1 2 3 4]創建一個n×n的2D列表

[5 6 7 8]

[9 10 11 12]

我嘗試使用下面的代碼來做到這一點

self.board = [[list(range(n*n) for i in range(self.n)] for num in range(self.n)] 

而是它填充列表中的每個元素有16個元素

我應該使用什麼表情來代替名單(範圍(N * N)) ?

+0

'[列表(itertools.islice(範圍(1,N + 1),I,I +步驟)),其中i在範圍(0,N,步驟)]' – Kasramvd

回答

2

嘗試:

>>> N = 4 
>>> board = [[j for j in xrange(N*i+1,N*i+N+1)] for i in xrange(N)] 
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] 
1

如何:

>>> n = 4 
>>> [[j*n+i+1 for i in range(n)] for j in range(n)] 
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]