很长一段时间以来,Python 都没有办法执行链表数据结构。它确实支持列表,但在将它们用作链表的概念时遇到了许多问题,例如列表是刚性的并且不是通过指针连接的,因此占用了定义的内存空间,如果列表未完全填满,甚至可能会被浪费。事实上,为了克服列表所存在的问题,Python 的出队数据结构也可以像链表一样工作。但所有这些都因为 llist 被涵盖了。
Python 中的 llist 模块
llist 是 CPython 的扩展模块,提供基本的链表结构。它们比出队甚至标准列表要快得多。
安装
要利用 llist 提供的优势,必须像任何其他 python 扩展或模块一样使用 pip 安装它。以下命令将完成这项工作。
pip install llist
如果不是这样,可以从 http://pypi.python.org/pypi 手动下载,然后解压资源并使用“python setup.py install”进行编译。成功安装模块后,您只需在需要时导入该模块即可。
提供的方法
目前,llist提供了以下两种类型的链表:
- 单链表(sllist):一个链表,其中的节点指向其旁边的节点。
- 双向链表(dllist):一个链表,其中的节点既指向其后的节点,也指向其前的节点。
该模块包含以下对象:
- dllist :实现双向链表的对象
- dllistnode :返回一个新的双向链表节点,可选初始化
- dllistiterator:dllist 的迭代器对象
- sllist :实现单链表的对象
- sllistnode :一个单链表节点,可选初始化
- sllistiterator :sllist 的迭代器对象
以下示例将帮助您更好地理解。他们给出了有关执行 llist 支持的两种类型列表的基本想法: 示例 1:sllist
Python3
# importing packages
import llist
from llist import sllist, sllistnode
# creating a linked list
lst = sllist(['first', 'second', 'third'])
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
# adding and inserting values
lst.append('fourth')
node = lst.nodeat(2)
lst.insertafter('fifth', node)
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
# popping a value
# i.e. removing the last entry of the list
lst.pop()
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
# removing a specific element
node = lst.nodeat(1)
lst.remove(node)
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
输出:
sllist([first, second, third]) sllistnode(first) sllistnode(third) 3 sllist([first, second, third, fifth, fourth]) sllistnode(first) sllistnode(fourth) 5 sllist([first, second, third, fifth]) sllistnode(first) sllistnode(fifth) 4 sllist([first, third, fifth]) sllistnode(first) sllistnode(fifth) 3
示例 2:动态库列表
Python3
# importing packages
import llist
from llist import dllist, dllistnode
# creating a linked list
lst = dllist(['first', 'second', 'third'])
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
# adding and inserting values
lst.append('fourth')
node = lst.nodeat(2)
lst.extendleft(['fifth', 'sixth'])
new_node = dllistnode('seventh')
ref_node = lst.nodeat(2)
lst.insertnode(new_node, ref_node)
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
# popping a value
# i.e. removing the last entry of the list
lst.pop()
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
# removing a specific element
node = lst.nodeat(1)
lst.remove(node)
print(lst)
print(lst.first)
print(lst.last)
print(lst.size)
print()
输出:
dllist([first, second, third]) dllistnode(first) dllistnode(third) 3 dllist([sixth, fifth, seventh, first, second, third, fourth]) dllistnode(sixth) dllistnode(fourth) 7 dllist([sixth, fifth, seventh, first, second, third]) dllistnode(sixth) dllistnode(third) 6 dllist([sixth, seventh, first, second, third]) dllistnode(sixth) dllistnode(third) 5
相关用法
- Python list()用法及代码示例
- Python locals()用法及代码示例
- Python len()用法及代码示例
- Python log10()用法及代码示例
- Python ldexp()用法及代码示例
- Python list copy()用法及代码示例
- Python list index()用法及代码示例
- Python list insert()用法及代码示例
- Python list pop()用法及代码示例
- Python list remove()用法及代码示例
- Python list reverse()用法及代码示例
- Python list sort()用法及代码示例
- Python lzma.LZMACompressor()用法及代码示例
- Python linecache.getline()用法及代码示例
- Python list转string用法及代码示例
- Python lists转XML用法及代码示例
- Python logging.debug用法及代码示例
- Python logging.Logger.debug用法及代码示例
- Python logging.LogRecord用法及代码示例
- Python logging.handlers.SocketHandler.makePickle用法及代码示例
- Python len方法用法及代码示例
- Python list构造函数用法及代码示例
- Python String format()用法及代码示例
- Python abs()用法及代码示例
- Python any()用法及代码示例
注:本文由纯净天空筛选整理自vanshikagoyal43大神的英文原创作品 llist module in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。