很長一段時間以來,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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。