python以单位长度划分列表_Python:将列表切成n个几乎相等长度的分区

本问题已经有最佳答案,请猛点这里访问。

我正在寻找一种快速,干净,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)

在这里,对列表切片的迭代有很多个答案,它们与我想要的非常接近,除了它们专注于列表的大小,而且我关心列表的数量(其中一些还填充了None)。 显然,这些都是微不足道的转换,但是我正在寻找最佳实践。

同样,人们在这里指出了很好的解决方案如何将列表分成大小均匀的块? 对于一个非常类似的问题,但是我对分区的数量而不是特定大小更感兴趣,只要它在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],

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值