2015-08-21 143 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]]