Break a list into chunks of size N in Python
Method 1: Using yield
The yield keyword enables a function to comeback where it left off when it is called again. This is the critical difference from a regular function. A regular function cannot comes back where it left off. The yield keyword helps a function to remember its state. The yield enables a function to suspend and resume while it turns in a value at the time of the suspension of the execution.
my_list = ['geeks', 'for', 'geeks', 'like', 'geeky','nerdy', 'geek', 'love', 'questions','words', 'life'] # Yield successive n-sized # chunks from l. def divide_chunks(l, n): # looping till length l for i in range(0, len(l), n): yield l[i:i + n] # How many elements each # list should have n = 5 x = list(divide_chunks(my_list, n)) print (x) |
Output:
[['geeks', 'for', 'geeks', 'like', 'geeky'], ['nerdy', 'geek', 'love', 'questions', 'words'], ['life']]
Method 2: Using List comprehension
List comprehension is an elegant way to break a list in one line of code.
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] # How many elements each # list should have n = 4 # using list comprehension final = [my_list[i * n:(i + 1) * n] for i in range((len(my_list) + n - 1) // n )] print (final) |
Output:
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]