1

I'm trying to create a nxn 2D list where its values starts from 0 to n

something like this

[ 1 2 3 4 ]

[ 5 6 7 8 ]

[ 9 10 11 12]

I tried to use the following code to do it

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

but instead it fills every element in the list with 16 elements

What expression should I use to replace list(range(n*n)) ?

Community
  • 1
  • 1
Chan Tak Zee
  • 97
  • 2
  • 12

2 Answers2

1

How about:

>>> 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]]
Kevin
  • 74,910
  • 12
  • 133
  • 166
1

Try:

 >>> 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]]
Assem
  • 11,574
  • 5
  • 59
  • 97