# Split list into smaller lists (split in half)

### Question

I am looking for a way to easily split a python list in half.

So that if I have an array:

``````A = [0,1,2,3,4,5]
``````

I would be able to get:

``````B = [0,1,2]

C = [3,4,5]
``````
1
124
3/9/2019 8:44:11 PM

``````A = [1,2,3,4,5,6]
B = A[:len(A)//2]
C = A[len(A)//2:]
``````

If you want a function:

``````def split_list(a_list):
half = len(a_list)//2
return a_list[:half], a_list[half:]

A = [1,2,3,4,5,6]
B, C = split_list(A)
``````
185
9/16/2018 11:31:34 PM

A little more generic solution (you can specify the number of parts you want, not just split 'in half'):

EDIT: updated post to handle odd list lengths

EDIT2: update post again based on Brians informative comments

``````def split_list(alist, wanted_parts=1):
length = len(alist)
return [ alist[i*length // wanted_parts: (i+1)*length // wanted_parts]
for i in range(wanted_parts) ]

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

print split_list(A, wanted_parts=1)
print split_list(A, wanted_parts=2)
print split_list(A, wanted_parts=8)
``````