gpt4 book ai didi

python - 将列表分割成 n 个几乎等长的分区

转载 作者:IT老高 更新时间:2023-10-28 21:41:31 25 4
gpt4 key购买 nike

我正在寻找一种快速、干净、pythonic 的方法来将列表划分为 n 个几乎相等的分区。

partition([1,2,3,4,5],5)->[[1],[2],[3],[4],[5]]
partition([1,2,3,4,5],2)->[[1,2],[3,4,5]] (or [[1,2,3],[4,5]])
partition([1,2,3,4,5],3)->[[1,2],[3,4],[5]] (there are other ways to slice this one too)

这里有几个答案Iteration over list slices运行非常接近我想要的,除了它们专注于列表的 size,我关心列表的 number(其中一些还填充没有任何)。显然,这些转换很简单,但我正在寻找最佳实践。

同样,人们在这里指出了很好的解决方案How do you split a list into evenly sized chunks?对于一个非常相似的问题,但我更感兴趣的是分区的数量而不是具体的大小,只要它在 1 以内。同样,这很容易转换,但我正在寻找最佳实践。

最佳答案

只是一种不同的做法,仅当 [[1,3,5],[2,4]] 在您的示例中是可接受的分区时才有效。

def partition ( lst, n ):
return [ lst[i::n] for i in xrange(n) ]

这满足@Daniel Stutzbach 的例子中提到的例子:

partition(range(105),10)
# [[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
# [1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 101],
# [2, 12, 22, 32, 42, 52, 62, 72, 82, 92, 102],
# [3, 13, 23, 33, 43, 53, 63, 73, 83, 93, 103],
# [4, 14, 24, 34, 44, 54, 64, 74, 84, 94, 104],
# [5, 15, 25, 35, 45, 55, 65, 75, 85, 95],
# [6, 16, 26, 36, 46, 56, 66, 76, 86, 96],
# [7, 17, 27, 37, 47, 57, 67, 77, 87, 97],
# [8, 18, 28, 38, 48, 58, 68, 78, 88, 98],
# [9, 19, 29, 39, 49, 59, 69, 79, 89, 99]]

关于python - 将列表分割成 n 个几乎等长的分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659900/

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