Python 把一根绳子精确地分成N段

Python 把一根绳子精确地分成N段,python,string,algorithm,logic,Python,String,Algorithm,Logic,给定一个数字N和一个字符串,我需要将字符串精确地分成N个部分 例如,如果N=3 abcd->[ab,c,d] abcde->[ab,cd,e] abcdef->[ab,cd,ef] abcdefg->[abc,de,fg] 最好用python实现这一点的最佳方法是什么 我目前工作不够好的解决方案是 chunkSize = int(ceil(len(myString) / float(numOfChunks))) chunks = [myString[i:i+chunkSize ] for i i

给定一个数字N和一个字符串,我需要将字符串精确地分成N个部分

例如,如果N=3

abcd->[ab,c,d] abcde->[ab,cd,e] abcdef->[ab,cd,ef] abcdefg->[abc,de,fg] 最好用python实现这一点的最佳方法是什么

我目前工作不够好的解决方案是

chunkSize = int(ceil(len(myString) / float(numOfChunks)))
chunks = [myString[i:i+chunkSize ] for i in range(0, len(myString), chunkSize )]

将输入序列分成偶数块的生成器:

def split_into(s, n):
    size, remainder = divmod(len(s), n)
    start = 0
    for i in range(n):
        length = size + (i < remainder)
        yield s[start:start + length]
        start += length

这是伪代码。我不懂Python,但作为一种通用算法可能很有用

RegLen <- Int(Len(Str)/N)   # The integer portion only
FirstLen = Len(Str) - N * RegLen
# Output goes into Output[] array of length N elements, each a substring

Output[1] = Left(Str, FirstLen)

For i <- 2 to N
   StartPosition <- FirstLen + (i-2) * RegLen + 1
   Output[i] <- Mid(Str, StartPosition, RegLen)
Loop

我不明白。我数了3个。为什么具体的分布不完全可除,为什么不['a','b','cd']和['a','bc','de']和['ab','cd','efg']?对不起,我已经修好了。我是说3。如果是4,那么例如:abcde->[ab,c,d,e]分割的标准是什么?我的意思是,abcd也可以分为[a,b,cd]或[a,bc,d]或其他类型?这与我的想法非常接近。我试试看。谢谢这是一个可爱的函数和答案,+1:
RegLen <- Int(Len(Str)/N)   # The integer portion only
FirstLen = Len(Str) - N * RegLen
# Output goes into Output[] array of length N elements, each a substring

Output[1] = Left(Str, FirstLen)

For i <- 2 to N
   StartPosition <- FirstLen + (i-2) * RegLen + 1
   Output[i] <- Mid(Str, StartPosition, RegLen)
Loop