python教程—根据Python中的一组索引将列表拆分为多个部分-Python实用宝典

python教程—根据Python中的一组索引将列表拆分为多个部分

根据任意数量的索引将列表分割为多个部分的最佳方法是什么?给出下面的代码

根据任意数量的索引将列表分割为多个部分的最佳方法是什么?给出下面的代码

    indexes = [5, 12, 17] list = range(20)

返回类似这样的东西

    part1 = list[:5] part2 = list[5:12] part3 = list[12:17] part4 = list[17:]

如果没有索引,它应该返回整个列表。

回答

这是我能想到的最简单、最符合python思想的解决方案:

    def partition(alist, indices): return [alist[i:j] for i, j in zip([0]+indices, indices+[None])]

如果输入非常大,那么迭代器解决方案应该更方便:

    from itertools import izip, chain def partition(alist, indices): pairs = izip(chain([0], indices), chain(indices, [None])) return (alist[i:j] for i, j in pairs)

当然,非常非常懒惰的家伙解决方案(如果你不介意得到数组而不是列表,但无论如何,你总是可以把它们还原为列表):

    import numpy partition = numpy.split

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
1

发表评论