• 技术文章 >Python技术 >Python基础教程

    python链表法的优缺点

    小妮浅浅小妮浅浅2021-09-25 09:31:22原创2431

    1、优点,方便删除记录,直接处理数组对应下标的子数组。平均搜索速度快。如果有冲突,只需要查询子数组。

    2、缺点,使用指针导致查询速度较慢,内存占用可能较高,不适合序列化。

    而开放式寻址法的优缺点与链表法相反。因为Python的一切都是基于Dict的,都需要序列化,所以选择了开放式寻址法。

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

       # keys函数

    #!/usr/bin/env python

    # coding=utf-8

      

    class Dict:

        def __init__(self, num):

            self.__solts__ = []

            self.num = num

            for _ in range(num):

                self.__solts__.append([])

        def hash_fun(self,key,num):

            hashval = 0

            x = key

            if x < 0:

                    print "the key is low"

                    return

            while x != 0:

                    hashval = (hashval << 3) + x%10

                    x /=10

            return hashval % num

        def put(self, key, value):

            i = self.hash_fun(key,self.num) % self.num

            for p, (k, v) in enumerate(self.__solts__[i]):

                if k == key:

                    break

            else:

                self.__solts__[i].append((key, value))

                return

            self.__solts__[i][p] = (key, value)

        def get(self, key):

            i = self.hash_fun(key,self.num) % self.num

            for k, v in self.__solts__[i]:

                if k == key:

                    return v

            raise KeyError(key)

        # keys函数

        def keys(self):

            ret = []

            for solt in self.__solts__:

                for k, _ in solt:

                    ret.append(k)

            return ret

        def __getitem__(self,key):

            return self.get(key)

      

        def __setitem__(self,key,data):

            self.put(key,data)

    H = Dict(13)

    H[54] = "cat"

    H[26] = "dog"

    H[93] = "lion"

    H[17] = "tiger"

    H[77] = "bird"

    H[31] = "cow"

    H[44] = "goat"

    H[55] = "pig"

    H[20] = "chicken"

    print H.get(54)

    H.put(13,"duck")

    print H.__solts__

    print H.keys()

    以上就是python链表法的优缺点,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python链表法
    上一篇:python raise触发异常的实现 下一篇:python有序Dict的原理

    相关文章推荐

    • python Pytest有什么特点• python如何打印矩阵• Python Modules是什么意思• python三种导入模块的方式• python查找计算函数的整理• python填充压缩的函数总结• python分割拼接函数的介绍• python判断字符串函数的归纳• python如何实现图像等比缩放• python setup和teardown的使用• python绘制散点图的两种方法• python用plt.pie绘制饼图• python Axes3D绘制3D图形• python raise触发异常的实现

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网