热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

链表Python库

链表Python库原文:https://www.gees

链表 Python 库

原文:https://www . geesforgeks . org/python-library-for-link-list/

链表 是编程中简单的数据结构,显然是用来存储数据并进行相应的检索。为了更容易想象,它更像一个动态数组,其中数据元素通过指针链接(即当前记录指向它的下一个记录,下一个记录指向它后面的记录,这一直持续到结构的末尾),而不是被紧密打包。
链表有两种类型:


  1. 单链表:在这种情况下,节点指向紧接其后的节点

  2. 双向链表:在这种情况下,节点不仅引用它旁边的节点,还引用它前面的节点。


Python 中的链表:

从 Python 开始,它没有像经典编程语言那样内置链表库。Python 确实有一个作为动态数组工作的内置类型列表,但是它的操作不应该与链表的典型功能相混淆。这并不意味着人们不能在 Python 中实现链表,他们可以,但它不会是直截了当的。以下方法可用于在 Python 中实现链表,因为它没有内置库:

方法一:使用 得克() 包裹。
这是 Python 中的一个内置类,显然是用于出列的,但是可以通过某种方式实现,使得它在特定条件下像链表一样工作。

下面是链表的实现:

Python 3

# importing module
import collections
# initialising a deque() of arbitrary length
linked_lst = collections.deque()
# filling deque() with elements
linked_lst.append('first')
linked_lst.append('second')
linked_lst.append('third')
print("elements in the linked_list:")
print(linked_lst)
# adding element at an arbitrary position
linked_lst.insert(1, 'fourth')
print("elements in the linked_list:")
print(linked_lst)
# deleting the last element
linked_lst.pop()
print("elements in the linked_list:")
print(linked_lst)
# removing a specific element
linked_lst.remove('fourth')
print("elements in the linked_list:")
print(linked_lst)

输出:

elements in the linked_list:
deque(['first', 'second', 'third'])
elements in the linked_list:
deque(['first', 'fourth', 'second', 'third'])
elements in the linked_list:
deque(['first', 'fourth', 'second'])
elements in the linked_list:
deque(['first', 'second'])

什么时候用 deque()做链表?


  • 只需要在前面和后面分别插入和删除元素。从中间插入和移除元素变得很耗时。

  • 原地反转,因为 Python 现在允许元素在原地反转。

  • 存储优于性能,并非所有元素都有自己的独立节点

方法二:使用 llist 套装。

llist 是 CPython 提供基本链表数据结构的扩展模块。命令行中的命令下面给出了类型:

pip install llist

下面是链表的实现:

Python 3

# importing packages
import llist
from llist import sllist,sllistnode
# creating a singly 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()
# poping 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

方法 3: 使用结构链接

结构链接用于轻松访问和可视化不同的数据结构,包括链表、双链表、二叉树、图、栈和队列。

结构链接。LinkedList 和 structlinks。DoublyLikedList 模块可以用来制作链表。所有可以用列表执行的操作也可以用 structlinks 执行。LinkedList 类。

碰杯去文档

在命令行中键入命令:

pip install structlinks

下面是链表的一些方法的实现:

Python 3

import structlinks
from structlinks import LinkedList
# create an empty linked list
lst = LinkedList()
# create a linked list with initial values
lst = LinkedList([1, 10.0, 'string'])
print(lst)
print()
print('Elements of list:')
# elements of the list
element0 = lst[0]
element1 = lst[1]
element2 = lst[2]
print(f'first element : {element0}')
print(f'second element : {element1 }')
print(f'third element : {element2}')
print()
print('Length of list:')
# Length of the list
length = len(lst)
print(f'size of the list : {length}')
print()
print('Set item:')
# Set item
lst[0] = 10
print(f'list after setting lst[0] to 10 : {lst}')
print()
print('Append And Insert:')
# Append And Insert
lst.append('another string')
lst.insert(1, 0.0)
print(f'list after appedning and inserting: {lst}')
print()
print('Pop and Remove')
# Pop and Remove
element = lst.pop(0)
lst.remove(10.0)
print(f'list after poping and removing : {lst}')
print(f'pop function also returns the element : {element}')
# This code is contributed by eeshannarula29

输出:

[1 -> 10.0 -> string]
Elements of list:
1
10.0
string
Length of list:
3
Set item:
list after setting lst[0] to 10 : [10 -> 10.0 -> string]
Append and Insert:
list after appedning and inserting: [10 -> 0.0 -> 10 -> string -> another string]
Pop and Remove:
list after poping and removing: [0.0 -> string -> another string]

推荐阅读
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • 深入理解线程池及其基本实现
    本文探讨了线程池的概念、优势及其在Java中的应用。通过实例分析不同类型的线程池,并指导如何构建一个简易的线程池。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 本文提供了一种有效的方法来解决当Android Studio因电脑意外重启而导致的所有import语句出现错误的问题。通过清除缓存和重建项目结构,可以快速恢复开发环境。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • 本文将详细探讨 Python 编程语言中 sys.argv 的使用方法及其重要性。通过实际案例,我们将了解如何在命令行环境中传递参数给 Python 脚本,并分析这些参数是如何被处理和使用的。 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • HBase 数据复制与灾备同步策略
    本文探讨了HBase在企业级应用中的数据复制与灾备同步解决方案,包括存量数据迁移及增量数据实时同步的方法。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文探讨了如何在Python中将具有相同值的元素分组到矩阵中,这是一个在数据分析和处理中常见的需求。 ... [详细]
author-avatar
mobiledu2502887683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有