0

I have a list containing 100 items. How do I convert it to a 20*5 two-dimensional list? My code:

l = [2,3,1,...,77]
m = 20
n = 5
Baz
  • 12,713
  • 38
  • 145
  • 268

2 Answers2

0

A couple of nested loops should do the trick:

result = []
for i in range(m):
    row = []
    for j in range(n):
        row.append(l[i * n + j])

    result.append(row)
Mureinik
  • 297,002
  • 52
  • 306
  • 350
0
l = [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4]
n = 5

Using list comprehension

subLists = [l[i:i+n] for i in range(0, len(l), n)]

Using a generator

def make_sublists_generator(l, sublists_size):
    for i in range(0, len(l), sublists_size):
        yield l[i : i + sublists_size]

subLists = list(make_sublists_generator(l, n)) 

Both output the same

print(str(subLists))

[[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4]]

Note

It still works if the list does not have a size multiple of n, the last sublist will simply be shorter. You might want to check len(l)%sublists_size at the start of the make_sublists function if you want to raise an Exception

Bentaye
  • 9,403
  • 5
  • 32
  • 45