场景一

假设有一段任意长度的列表,需要把该列表进行分割,要求分割成固定长度为N的若干个小列表。

比如,L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

需要将其分割为长度为3的小列表:[[0, 1, 2],[3, 4, 5],[6, 7, 8],[9]]

解决方法:

1
L = [L[i:i+N] for i in range(0, len(L), N)]

场景二

假设有一段任意长度的列表,需要把该列表进行分割,要求分割成M个小列表,且M个小列表的长度尽可能均匀。

比如,L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

需要将其分割为3个小列表,且每个小列表的长度尽可能均匀:[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9]]

解决方法:

1
2
3
4
5
6
7
8
9
10
import math
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
m = 3

def cut_list(arr, m):
n = int(math.ceil(len(arr) / float(m)))
return [arr[i:i+n] for i in range(0, len(arr), n)]


cut_list(arr, m)

math.ceil(x)会返回一个大于或等于的最小整数,比如

1
2
3
4
5
>>> x = 10 / 3.0
>>> x
3.3333333333333335
>>> math.ceil(x)
4

场景三

假设有一段任意长度的字符串,需要把该字符串进行分割,要求分割成固定长度为K的若干个小字符串

比如,str_test = ‘123456789abcdefg’

需要将其分割成长度为3的若干个小字符串:[‘123’, ‘456’, ‘789’, ‘abc’, ‘def’, ‘g’]

解决方法:

1
2
3
4
5
6
7
8
9
import re
def cut_str(str_test, lenth):
textArr = re.findall('.{'+str(lenth)+'}',str_test)
textArr.append(str_test[(len(textArr)*lenth):])
return textArr

str_test = '123456789abcdefg'
length = 3
print(cut_str(str_test, length))

参考链接:
https://blog.csdn.net/c42427106/article/details/79819193

https://www.coder4.com/archives/2089