gpt4 book ai didi

Python 根据原始列表长度将列表拆分为更小的列表

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:39 28 4
gpt4 key购买 nike

我试图想出一个函数来根据列表的原始长度平均分割列表的长度。

因此,例如,如果我返回的数据集是 2000,我想将其拆分为 4。而如果数据集是 1500,则将其拆分为 3。

然后调用函数:

Thread_A_DATA, Thread_B_DATA = split_list( SQL_RETURN )

我想做如下的事情:

if len(dataset) <= 1000:
# Split in 2
a, b = split_list(dataset, 2)
if len(dataset) > 1000 or len(dataset) <= 1500:
# Split in 3
a, b, c = split_list(dataset, 3)

# etc etc...

我已经成功地使用之前在 stackoverflow 上找到的这段代码将数据集分成两半:

def split_list( a_list ):
half = len( a_list ) / 2
return a_list[:half], a_list[half:]

但我不能用 3、4 或 5 个拆分来计算它!

如果有人能提供帮助那就太好了。

提前致谢。

最佳答案

据我了解这个问题,您不想每 500 个元素拆分一次,而是如果元素少于 1000 个则拆分为 2 个,如果小于 1500 个则拆分为 3 个,2000 个则拆分为 4 个,等等。但是如果有 1700 个元素,您将分成 4 组,每组 425 个元素(这就是我对“平均分割”的理解)。

所以,这是我的解决方案:

def split_list(a_list, number_of_splits):
step = len(a_list) / number_of_splits + (1 if len(a_list) % number_of_splits else 0)
return [a_list[i*step:(i+1)*step] for i in range(number_of_splits)]

l = [1, 8, 2, 3, 4, 5, 6, 7, 1, 5, 3, 1, 2, 5]
print l
print split_list(l, 3)
print split_list(l, 2)

输出

[1, 8, 2, 3, 4, 5, 6, 7, 1, 5, 3, 1, 2, 5]
[[1, 8, 2, 3, 4], [5, 6, 7, 1, 5], [3, 1, 2, 5]]
[[1, 8, 2, 3, 4, 5, 6], [7, 1, 5, 3, 1, 2, 5]]

编辑:Python 3 版本:

def split_list(a_list, number_of_splits):
step = len(a_list) // number_of_splits + (1 if len(a_list) % number_of_splits else 0)
return [a_list[i*step:(i+1)*step] for i in range(number_of_splits)]

l = [1, 8, 2, 3, 4, 5, 6, 7, 1, 5, 3, 1, 2, 5]
print(l)
print(split_list(l, 3))
print(split_list(l, 2))

关于Python 根据原始列表长度将列表拆分为更小的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960445/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com