Python 将列表n等分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 将列表n等分相关的知识,希望对你有一定的参考价值。

参考技术A 将 python 列表约n等分(大多数情况下是无法分的正好的,除非 n % ncut==0)

自己懒得写,google了半天,大多数不是有错就是从有错的地方抄来的,血压拉满。于是自己写了两种,时间复杂度均为O(n)

如果有更好的办法或者有错误可以分享并指正。

顺便吐槽一句python的数据结构实现真的是太令人头疼了。

列表分成N等份

将一个长列表分为N个短列表

def Equal_division_list(eq_list, n):
‘‘‘
:param seq:传入的列表
:param n:划分的份数,几等分
:return:返回一个嵌套列表
‘‘‘
num_list = []
if n > len(eq_list):
print(‘份数大于列表长度,请重新输入‘)
elif n == 1:
num_list = eq_list
elif n == len(eq_list):
for i in eq_list:
num_list.append(i)
elif len(eq_list) % n == 0:
index = 0
for i in range(n):
num_list.append(eq_list[index:index + int(len(eq_list) / n)])
index += int(len(eq_list) / n)
else:
index = 0
for i in range(n):
num_list.append(eq_list[index:index + int(len(eq_list) / n)])
index += int(len(eq_list) / n)
for j in range(len(eq_list) % n):
num_list[-(j + 1)].append(eq_list[-(j + 1)])
return num_list

运行
if __name__ == ‘__main__‘:
print(Equal_division_list([i for i in range(5)], 4))

[[0], [1], [2], [3, 4]]
------------------------------------------------------------
if __name__ == ‘__main__‘:
print(Equal_division_list([i for i in range(15)], 4))

[[0, 1, 2], [3, 4, 5, 12], [6, 7, 8, 13], [9, 10, 11, 14]]

以上是关于Python 将列表n等分的主要内容,如果未能解决你的问题,请参考以下文章

python将整数均分成N等分

Python - 将函数附加到列表[重复]

python 一个函数,它接受一个列表并将其分成n个段,同时将它们排序为列表字典。

使用 readlines 导入后从 Python 列表中删除 \r\n

python列表中如何做到一个列表分割成多个列表

Python如何将列表中的元素添加到另一个字符串列表中