How to split a list into chucks of different sizes specified by another list? [duplicate]

2024/9/22 16:36:07

I have an array I am trying to split into chunks of different sizes.

In the example below, loopN is are the chuck sizes. I have tried all sorts of ways to iterate through loopN, however can't figure it out. list is the array I am trying to split into chunks.

loopN = [2,3,1]
list = [1,2,3,4,5,6]for i in range(0, len(list), loopN):chunks.append(list[i:i+loopN])

The output I was looking for was [[1,2],[3,4,5],[6]].

How do I split the array into chucks of different sizes?

Answer

You can use itertools.islice to take slices of l according to the elements in loopN:

from itertools import isliceloopN = [2,3,1]
l = iter([1,2,3,4,5,6])[list(islice(l, i)) for i in loopN]
# [[1, 2], [3, 4, 5], [6]]

If you want to stick to list methods, following your approach, there are a few things that are wrong already spotted by @barmar. Note that the slice i:i+loopN doesn't really make sense. You cannot add an integer and a list.

You need to iterate over the values that will be used to slice l, so over loopN. Also you don't need ranges, just directly iterate over loopN, which is an iterable too, and keep track over the previous values you've iterated over, adding them on each iteration to move the slices forward.

https://en.xdnf.cn/q/119117.html

Related Q&A

Python Sum of digits in a string function

My function needs to take in a sentence and return the sum of the numbers inside. Any advice?def sumOfDigits(sentence):sumof=0for x in sentence:if sentence.isdigit(x)== True:sumof+=int(x)return sumof

How to select columns using dynamic select query using window function

I have sample input dataframe as below, but the value (clm starting with m) columns can be n number. customer_id|month_id|m1 |m2 |m3 .......m_n 1001 | 01 |10 |20 1002 | 01 |20…

Downloading Books from website with python

Im downloading books from the website, and almost my code runs smoothly, but when I try to open the pdf Book on my PC. An error generated by Adobe Acrobat Reader that this is not supported file type.He…

Discord.py How can I make a bot delete messages after a specific amount of time

I have a discord bot that sends images to users when they use the !img command, I dont want people to request an image and then have it sit there until someone deletes it. Is there any way I can make i…

How to encode and decode a column in python pandas?

load = pd.DataFrame({A:list(abcdef),B:[4,5,4,5,5,4],C:[7,8,9,4,2,0],D:[1,3,5,4,2,0],E:[5,3,6,9,2,4],F:list(aaabbb)})How to encode and decode column F.Expected Output:Should have two more columns with e…

Pygame module not found [duplicate]

This question already has answers here:Why do I get a "ModuleNotFoundError" in VS Code despite the fact that I already installed the module?(23 answers)Closed 3 months ago.I have installed p…

Working with Lists and tuples

My data looks like:X=[1,2,3,4]But I need it to look like: Y=[(1,2,3,4)]How does one do this in python?

Football pygame, need help on timer [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.Want to improve this question? Add details and clarify the problem by editing this post.Closed 4 years ago.Improve…

Unable to Install GDAL Using PIP on Python

Im trying to install gdal in python3.8.8 (Windows 10) and im getting below error I have install Visual Studio Build Tools 2019 and reboot my PC Downgrade my Python from 3.9.5 to 3.8.8 C:\Program Files…

Append text to the last line of file with python

First, I use echo hello, >> a.txt to create a new file with one line looks like that. And I know \n is at the last of the line.Then I get some data from python, for example "world", I w…