import math
lists = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 7, 8, 1]
length = len(lists)
n = 4
for i in range(n):
one_list = lists[math.floor(i / n * length):math.floor((i + 1) / n * length)]
print(one_list)
其中,使用math.floor()是对浮点数向下取整,math.ceil()向上取整,直接使用round()是取得一个float类型的数最接近的整数,类似于四舍五入,不过使用round(1.5),输出1.直接使用int()则去掉小数部分,使用这几个不同函数,分出的数组也是不一样的。
2022-06-06修改,以上有不均匀的情况发生,比如当数组长度为7,n为5的时候,故当前修改如下
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# 步数
step = 5
print(len(nums))
# 整除,步长
counts = [len(nums) // step for _ in range(step)]
remaining = len(nums)-counts[0]*step
counts.insert(0, 0)
for i in range(1, step+1):
if remaining > 0:
# 剩余数逐一加到前面步长
counts[i], remaining = counts[i] + 1, remaining - 1
counts[i] += counts[i-1]
print(nums[counts[i-1]: counts[i]])
2022-06-06再次修改,第一种写法其实是没问题的 = =