listutils - list 衍生物

Python的内建 list 是一种非常快速和高效的序列类型,但它可能更适合某些访问模式,例如非顺序插入到大型列表中。 listutils 为这个问题提供了一个纯Python解决方案。

有关使用迭代器和列表的实用程序,请查看 iterutils 。对于a list -基于的版本 collections.namedtuple ,退房 namedutils

boltons.listutils.BList

BarrelList 的别名

class boltons.listutils.BarrelList(iterable=None)[源代码]

这个 BarrelList 是一种 list 子类型由许多动态缩放的子列表支持,以提供更好的缩放和随机插入/删除特性。它是建筑的子类型 list 并且具有相同的API,支持索引、切片、排序等。如果应用程序要求更高的性能,请考虑 blist module available on PyPI

这个名字来自库尔特·罗斯,他说这让他想起了桶装搬运工。不知道是怎么回事,但它很像BLIST,所以这个名字留了下来。BLIST当然是指 B-trees

参数:

iterable -- 列表的初始值的可选迭代。

>>> blist = BList(range(100000))
>>> blist.pop(50000)
50000
>>> len(blist)
99999
>>> len(blist.lists)  # how many underlying lists
8
>>> slice_idx = blist.lists[0][-1]
>>> blist[slice_idx:slice_idx + 2]
BarrelList([11637, 11638])

支持切片,并且可以在列表边界之间很好地工作,返回BarrelList的另一个实例。

append(item)[源代码]

将对象追加到列表的末尾。

count(item)[源代码]

返回值的出现次数。

del_slice(start, stop, step=None)[源代码]
extend(iterable)[源代码]

通过从迭代表中追加元素来扩展列表。

classmethod from_iterable(it)[源代码]
index(item)[源代码]

返回值的第一个索引。

如果值不存在,则引发ValueError。

insert(index, item)[源代码]

在索引前插入对象。

iter_slice(start, stop, step=None)[源代码]
pop(*a)[源代码]

移除并返回索引处的项目(默认为最后)。

如果List为空或索引超出范围,则引发IndexError。

reverse()[源代码]

反向 IN PLACE

sort()[源代码]

按升序对列表进行排序并返回None。

排序是就地的(即列表本身被修改)和稳定的(即保持两个相等元素的顺序)。

如果给定了键函数,则将其应用于每个列表项一次,并根据它们的函数值对它们进行升序或降序排序。

可以将REVERSE标志设置为按降序排序。