Python 把一根绳子精确地分成N段
给定一个数字N和一个字符串,我需要将字符串精确地分成N个部分 例如,如果N=3 abcd->[ab,c,d] abcde->[ab,cd,e] abcdef->[ab,cd,ef] abcdefg->[abc,de,fg] 最好用python实现这一点的最佳方法是什么 我目前工作不够好的解决方案是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
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