How to split a list into evenly sized chunks in Python

9 Answers

0 votes
import pprint


def split(the_list, chunk):
    for i in range(0, len(the_list), chunk):
        yield the_list[i:i + chunk]


a_list = range(0, 37)

pprint.pprint(list(split(a_list, 5)))


'''
run:

[range(0, 5),
 range(5, 10),
 range(10, 15),
 range(15, 20),
 range(20, 25),
 range(25, 30),
 range(30, 35),
 range(35, 37)]

'''

 



answered Nov 5, 2017 by avibootz
0 votes
a_list = range(0, 27)
chunk = 5

the_list = [a_list[i:i + chunk] for i in range(0, len(a_list), chunk)]

print(the_list)


'''
run:

[range(0, 5), range(5, 10), range(10, 15), range(15, 20), range(20, 25), range(25, 27)]

'''

 



answered Nov 5, 2017 by avibootz
0 votes
a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
chunk = 4

the_list = [a_list[i:i + chunk] for i in range(0, len(a_list), chunk)]

print(the_list)

print(the_list[0])
print(the_list[1])

print(the_list[0][0])
print(the_list[0][2])


'''
run:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20], [21, 22]]
[1, 2, 3, 4]
[5, 6, 7, 8]
1
3

'''

 



answered Nov 5, 2017 by avibootz
0 votes
a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
chunk = 4

the_list = [a_list[i:i + chunk] for i in range(0, len(a_list), chunk)]

for item in the_list[0]:
    print(item)


'''
run:

1
2
3
4

'''

 



answered Nov 5, 2017 by avibootz
0 votes
a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
chunk = 4

the_list = [a_list[i:i + chunk] for i in range(0, len(a_list), chunk)]

for l in the_list:
    print(*l)


'''
run:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 22

'''

 



answered Nov 5, 2017 by avibootz
0 votes
a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
chunk = 4

multi_list = [a_list[i:i + chunk] for i in range(0, len(a_list), chunk)]


for a_list in multi_list:
    for item in a_list:
        print(item, end=" ")
    print()


'''
run:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 22 

'''

 



answered Nov 5, 2017 by avibootz
0 votes
def chunks(lst, sz):
    for i in range(0, len(lst), sz):
        yield lst[i:i + sz]


lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

for c in chunks(lst, 2):
     print(c)



 
'''
run:

[1, 2]
[3, 4]
[5, 6]
[7, 8]
[9, 0]
 
'''

 



answered Jul 23, 2019 by avibootz
0 votes
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
 
l = list(zip(*[iter(lst)] * 4))
 
print(l)
 
 
 
'''
run:
 
[(1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12)]
 
'''

 



answered Apr 18, 2021 by avibootz
0 votes
from itertools import zip_longest

def chunks(n, iterable, padvalue = 0):
    return zip_longest(*[iter(iterable)] * n, fillvalue=padvalue)
    
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

for result in chunks(3, lst):
    print(result)




'''
run:

(1, 2, 3)
(4, 5, 6)
(7, 8, 9)
(10, 11, 12)
(13, 14, 15)
(16, 17, 18)
(19, 0, 0)

'''

 



answered Apr 18, 2021 by avibootz

Related questions

1 answer 141 views
1 answer 150 views
1 answer 132 views
2 answers 171 views
1 answer 129 views
1 answer 141 views
...