python实现简单的散列查找

python算法--散列(哈希) 散列方法又称哈希算法,实际上是对关键码值的索引,与关键码值对应的数据记录一般被存放在其他地方。 散列是一种非常高效的检索方法,散列技术把数据组织到一个表中,根据关键码的值来确定表中每个记录的位置,故散列技术适合精确查找,不适合进行范围查询。 1哈希之散列方法: 插入元素时:根据需要插入元素的值,通过某种计算得出元素的存储位置,将该元素插入到其对应的位置。 查找元素时:根据需要查找的元素进行某种计算... 阅读详情

散列简单滴说就是把字符串str 转换成 一组数字,该组数字是唯一的 ,哎哟,太难说了,lol开了,详细见代码,下面给出代码实现:

#这里我测试的字符串是以前三位字母,最后一位数字为例,例如:
#BCD3、NHJ4、GBD0……

lis = [0 for i in range(26*26*26*10)]
# 用于存储得到的散列值

print("输入长度:")
n = int(input())
# 输入n个字符串
print("输入长度:")
m = int(input())
# 输入m个字符串

#用hash_string函数实现散列,这里说明一下,将字符串中的字母视为一个26进制数
#然后把字符串中的字母(前三位)转换成十进制数,最后一位数字用ord()函数转换为int
#类型,并添加到前三位中,返回得到的散列值

def hash_string(stri):
    j = 0
    sum = 0
    for z in range(len(stri)-2, -1, -1):
        sum = sum + (ord(stri[z])-ord('A'))*pow(26, j)
        j += 1

    sum = sum*10 + ord(stri[len(stri)-1])
    return sum

#############################################
print("请输入n个字符串,以'Enter'结束")
for i in range(n):
    string = input()
    id = hash_string(string)
    lis[id] += 1
#############################################
print("输入待查询的m个字符串:")
for i in range(m):
    string = input()
    find = hash_string(string)
    print("该字符串在上述字数串出现的次数为:")
    print(lis[find])
    print("\n")

在这里插入图片描述

python散列表 链地址法解决冲突 除留余数法散列 插入删除查找操作(详细注释) 散列是数据结构中较为重要的内容。两种基本方法之一的链地址法虽稍繁琐,但思路较简单,过程清晰。 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找速度。这个映射函数叫做散列函数,记录的数组叫做散列表。 散列函数:除留余数法(取关键字被某个不大于散列表表长m的数p除后所得的余数为散... 阅读详情

相关推荐

Python 算法基础篇之散列查找算法:哈希表、哈希集合、哈希映射

散列查找算法是一种高效的查找技术,通过散列函数将键映射到数组的索引位置,实现快速的查找、插入和删除操作。本篇博客将介绍散列查找算法的三种常见应用:哈希表、哈希集合和哈希映射,并通过实例代码演示它们的应用。

小蓝枣的博客 2045

使用散列表进行查找【查找关键词:电话号码,名称】【平方取中法,除留余数法】【开放地址探测法,公共溢出区法】【计算ASL】

Library import pandas as pd import numpy as np import time 读取数据 df = pd.read_excel('重庆市印刷和记录媒介复制业754.xlsx') df.dropna(axis=0, how='any') # 去除非数 print("表长为:", len(df)) df.head() 表长为: 754 ID 企业名称 电话 企业地址

weixin_47042983的博客 1006

SAP 发货在途库存管理:POD确认差异下的2种后续调整方案对比

本文详细解析了SAP发货在途库存管理中POD确认差异后的财务调整方案,对比了移动类型417和555 T两种处理方式的适用场景及财务影响。通过实际案例说明如何优化POD流程,减少库存差异损失,提升供应链管理效率。特别适合SAP SD模块用户及供应链管理人员参考。

chiman6219的博客 393

Python字符串检索

1.count() 用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回0,否则返回出现的次数。 语法: str.count(sub[,start[,end]]) str:表示原字符串。 sub:表示要检索的字符串。 start:可选,表示检索范围的起始位置的索引。 end:可选,表示检索范围的结束位置的索引。 #检索网址中出现"/"符号出现的次数 str = "https://mp.youkuaiyun.com/mp_blog/creation/editor" print("

TINA_JING_LIU的博客 2万+

MiniMax H3本地部署实战:ComfyUI整合包安装与提速插件验证指南

在AIGC工具链快速演进的当下,本地部署内容生成模型成为许多创作者和开发者的关注焦点。本地部署意味着数据不出本机、可按需定制工作流,还能规避云端排队与外部依赖,其核心价值在于为内容生产提供可控、私密且可编程的生成环境。ComfyUI作为模块化节点式AI绘画工具,凭借灵活的工作流编排和API接口能力,成为承载这类模型的热门平台。MiniMax H3作为支持文本、参考图等多种输入的内容生成模型,与ComfyUI结合后,既适合个人进行概念验证,也能用于团队私有化流程搭建。实际落地过程中,中文整合包显著降低了环境配

weixin_29042035的博客 293

RK3568平台YOLO11模型部署实战:从环境搭建、模型转换到板端性能优化全解析

摘要: 本文详细介绍了在RK3568平台上从零部署YOLO11模型的完整流程。主要内容包括:1) 基于Conda搭建Python 3.8开发环境并安装RKNN-Toolkit2工具链;2) 使用LabelImg工具标注数据并构建YOLO格式数据集;3) 基于Ultralytics框架进行YOLO11模型训练及参数优化;4) 实现PyTorch→ONNX→RKNN的完整模型转换链。文章特别针对RK3568平台的NPU特性提供了关键参数配置建议,并分享了实际开发中的经验总结,最终可达到30FPS的稳定推理性能。

LXY_LOVE36的博客 279

使用python求数据离散度

在 excel 中有一个名为 AVEDEV 的函数,它返回一组数据与其均值的绝对偏差的平均值,可用于评测一组数据的离散度。 以下 python 代码可以实现类似的功能: #!/bin/python import sys def get_avedev(data): if len(data) == 0: return -1; ave = sum(data) * 1.0 / len(data) return sum([abs(v - ave) for v in d

choumin的专栏 3363

Hermes Agent 对阵 OpenClaw:自我改进的 AI 队友

但在 2026 年 2 月,Nous Research 发布了 Hermes Agent,它带来了不同的愿景:一个不仅能够运行,还能学习的代理。在完成复杂的多步骤任务后,它会分析自己的操作并创建一个可复用的技能。对于已在使用 OpenClaw 的澳大利亚企业而言,这意味着您可以试用 Hermes Agent,而无需丢失数月的配置和自定义成果。最重要的区别在于理念:OpenClaw 是一个需要配置的工具,而 Hermes Agent 则是一个会学习的队友。OpenClaw 的技能是静态的。

xiaoshun007的专栏 1571

使用python对数据进行筛选

DataFrame列表: 1使用isin函数筛选 2使用loc函数筛选 平时使用最多的筛选应该是字符串的模糊筛选, 在SQL语句里用的是like,在pandas里我们可以用.str.contains()来实现。 2.1使用str.contains函数筛选 2.2也可以使用 '|' 来进行多个条件的筛选: 筛选包含某一字符的行 作者:探索数据之美 链接:https://www.jianshu.com/p/805f20a...

ch206265的博客 2万+

Android Framework SurfaceFlinger面试题及参考答案

请简述 SurfaceFlinger 在 Android 系统中的作用。 SurfaceFlinger 是 Android 系统中一个非常关键的服务。它主要负责将多个应用程序的 Surface 合成到一个屏幕显示内容中。 从应用程序的角度来看,每个应用都有自己的 UI 界面,这些 UI 界面实际上是由一系列的图层(Surface)构成。例如,一个应用可能有背景图层、按钮图层、文本图层等。应用通过向 SurfaceFlinger 提供这些 Surface 来请求显示。 SurfaceFl

大模型大数据攻城狮的专栏 1183

python实现散列表的链表法

  在散列中,链接法是一种最简单的碰撞解决技术,这种方法的原理就是把散列到同一槽中的所有元素 都放在一个链表中。   链接法有两个定理,定理一:   在简单一致散列的假设下,一次不成功查找的期望时间为O(1 + n)   定理二:   在简单一致散列的假设下,平均情况下一次成功的查找需要的时间为O(1 + n)   该方法使用python的实现如下: # keys函数 ...

weixin_30622107的博客 366

在 SAP Gateway 主机上把 SAML 2.0 配置为 Service Provider:从架构到落地的完整实战

本文详细介绍了在SAP Gateway主机上配置SAML 2.0作为Service Provider的全流程。从概念梳理到实际操作,涵盖了关键步骤:启用本地SP服务、通过反向代理导出元数据、在IdP侧完成对接、配置信任关系与Artifact绑定、设置NameID身份联合等核心环节。特别强调了HTTP Artifact绑定的背道通信机制和证书配置要点,并针对常见错误提供了排障指引。文章注重实操性,结合SAP官方文档与社区最佳实践,为运维团队提供了一套完整的SAML SSO实施框架。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 148

具体的散列表实现示例

在这个示例中,HashTable 类使用了一个列表 self.table 来存储链表头节点,每个链表用于解决相同哈希值(即冲突)的键值对。_hash 方法是一个简单的哈希函数,它使用取模运算将关键字映射到表中的一个索引。例中,我们将使用链地址法(拉链法)来处理冲突,并使用Python的列表(list)和字典(dict)来模拟散列表的行为。不过,为了更贴近底层实现,我们不会直接使用Python的内置字典,而是自己实现一个简单的散列表。

DKPT的博客 463

Vue - 解决报错 Error: Cannot find module ‘XXX\@vue\cli-service\bin\vue-cli-service.js‘(vue项目编译运行出错,启动失败)

vue报错,Error: Cannot find module ‘@vue\cli-service\bin\vue-cli-service.js‘,vue2项目启动报错,vue3项目运行出错,vue执行npm run serve报错,找不到@vue/cli-service模块,vue项目关于:Error: Cannot find module ‘D:\@vue\cli-service\bin\vue-cli-service.js‘的解决方案,vue项目跑不起来了,Vue项目报错,跑项目报错Cannot fi

🏆 前端领域优质创作者 3113

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

抽象数据类型——映射(python)

抽象数据类型——映射,就是键-值关联的无序集合,如python中的字典数据类型。 在“字典”中,通过给定的Key可以很快查找并返回对应的Value,因此为了实现快速查找,最好采用散列表的方法。 通过散列表实现“字典”: class HashTable: def __init__(self): self.size = 11 #设置散列表含有11个槽 self.slots = [None] * self.size #保存键的列表 self.data =

y4ngy1的博客 500

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python 数据结构之哈希表的实现

哈希表(Hash table,也叫作散列表),是根据关键码值(Key value)而直接进行访问的数据结构。 也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈...

haeasringnar的博客 4420

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python hash算法实现

#!/usr/bin/env python # -*- coding:utf-8 -*- class HashTable: def __init__(self, size): self.elem = [None for i in range(size)] # 使用list数据结构作为哈希表元素保存方法 self.count = size # 最大表长

QuantumEnergy's blog 4006

python中哈希是什么意思_Python中的哈希表是什么

散列表(哈希表)散列表:所有的元素之间没有任何关系。元素的存储位置,是利用元素的关键字通过某个函数直接计算出来的。这个一一对应的关系函数称为散列函数或Hash函数。采用散列技术将记录存储在一块连续的存储空间中,称为散列表或哈希表(Hash Table)。关键字对应的存储位置,称为散列地址。散列表是一种面向查找的存储结构。它最适合求解的问题是查找与给定值相等的记录。但是对于某个关键字能对应很多记录的...

weixin_39528525的博客 164

通过hashtable实现dic

# -*- encoding: utf-8 -*- """ @File : 123.py @Time : 2021-10-07 18:11 @Author : XD @Email : gudianpai@qq.com @Software: PyCharm """ #实现ADT Map (字典) class HashTable: def __init__(self): self.size = 11 # 可以任意设置,但为了便于求解,应该设为素数 se

持之以恒 120

python搜索算法_python 算法 day6 搜索

排序与搜索搜索的算法过程就是在一些项的集合中找到一个特定的项,搜索过程中会根据此项是否存在来给出回答True 或者False.顺序搜索从列表的第一项开始,我们按照初始顺序从一项移动到下一项,直到我们遍历所有的数据项。def sequeueSearch(alist,item):pos= 0found= falsewhile posfound=Trueelse:pos= pos + 1return f...

weixin_35958479的博客 226

算法入门之路之python语言3

#!/usr/bin/envpython #coding=utf-8 #实现哈希表(线性地址再散列) defChangeKey(key,m,di): key01=(key+di)%m returnkey01 a=raw_input("Pleaseentrythe...

chnas46066的博客 155

Python数据结构13:散列(哈希)表,完美散列函数,解决冲突方法,开放寻址,负载因子,平均查找次数

散列表的概念。 散列表的实现。 开放寻址散列表。 数据项链列表实现

YangStudent的博客 4368

Python算法学习[6]—查找算法:表、树、散列、斐波那契查找算法&实践操作

在上述代码中,我们定义了一个fibonacci_search()函数,接收两个参数:arr表示待查找的数组,x表示要查找的元素。然后,设置offset初值为-1,并在while循环中继续查找元素,每次根据目标元素与当前位置的大小关系,选择左半部分或右半部分继续查找。本文介绍了四种常见的查找算法:表查找算法、树查找算法、散列查找算法和斐波那契查找算法,并提供了Python代码来实现和测试这些算法。在上述代码中,linear_search()函数接收两个参数:arr表示待查找的数组,x表示要查找的元素。

Python领域优质萌新学习笔记 573

[数据结构][Python]python实现散列表

散列表的实现常常叫做散列(hashing)。散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的。需要元素间任何排序信息的操作将不会得到有效的支持。 散列表是普通数组概念的推广。如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术。 当实际存储的关键字比可能的关键字总数较小时,采用散列表就比较直接寻址更为有效。在散列表中,不是直接把关键...

Twiss的博客 2908

链接法散列表python实现

链接法散列表 python实现 具有关键字k的节点,通过散列函数h, 把节点存放在散列表T[0…m-1]的槽h(k)内,h(k)为散列值,但是存在一个问题,不同的关键字可能有相同的散列值,存放在散列表内会发生冲突,因此,可以通过链接法,通过在每个槽内存放一个指向双向链表或单向链表的指针,把具有相同散列值的节点存放在一条链表内从而解决冲突。 class Node(object): def __init__(self, key): self.key = key self

qq_35404894的博客 420
上一篇: 三种简单的排序方法:冒泡排序、选择排序、插入排序(python实现)
下一篇: 单链表基本操作
mAN_DOm
博客等级 码龄8年 13粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值