博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-

class LinkList:
class Node:
def __init__(self, item=None):
self.item = item
self.next = None class LinkListIterator:
def __init__(self, node):
self.node = node def __next__(self):
if self.node:
cur_node = self.node
self.node = cur_node.next
return cur_node.item
else:
raise StopIteration def __iter__(self):
return self def __init__(self, iterable=None):
self.head = None
self.tail = None
if iterable:
self.extend(iterable) def append(self, obj):
s = LinkList.Node(obj)
if not self.head:
self.head = s
self.tail = s
else:
self.tail.next = s
self.tail = s def extend(self, iterable):
for obj in iterable:
self.append(obj) def find(self, obj):
for n in self:
if n == obj:
return True
else:
return False def __iter__(self):
return self.LinkListIterator(self.head) def __repr__(self):
return "<<" + ", ".join(map(str, self)) + ">>" # 类似于集合的结构
class HashTable:
def __init__(self, size=101):
self.size = size
self.T = [LinkList() for _ in range(self.size)] def h(self, k):
return k % self.size def insert(self, k):
i = self.h(k)
if self.find(k):
print("Duplicated Insert.")
else:
self.T[i].append(k) def find(self, k):
i = self.h(k)
return self.T[i].find(k) ht = HashTable() ht.insert(0)
ht.insert(1)
ht.insert(3)
ht.insert(102)
ht.insert(508) print(",".join(map(str, ht.T)))
print(ht.find(203))
print(ht.find(3))

哈希表(实现 Python 中的集合 set)的更多相关文章

  1. python 中的集合set

    python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...

  2. Python中的集合类型分类和集合类型操作符解析

    集合类型    数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements).    Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...

  3. python学习之【第七篇】:Python中的集合及其所具有的方法

    1.前言 python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重. 集合是无序的,集合中的元素必须是不可变类型.集合可以作为字典的key. ...

  4. 8、python中的集合

    集合是python中无序.可变的数据结构.集合与字典类似,集合中的元素必须是可哈希的(等同于字典中的键),也就是说集合中的元素是唯一.不可变的数据类型.这里前面说集合可变,后面又说集合中的元素不可变是 ...

  5. 14.python中的集合

    什么是集合?正如其字面的意思,一堆东西集中合并到一起.乍一听貌似和容器没什么差别,嗯,好吧,集合也算是一种容器. 在学习这个容器有什么不同之前,先看看集合是如何创建的: a = set() #可变集合 ...

  6. python中的集合

    在python中,普通集合是可变数据类型 通过以下案例说明: >>> s = {1, 2, 3, 4} >>> id(s) 2108634636808 >&g ...

  7. python中的集合、元组和布尔

    #元组,元组跟列表一样,只不过列表可读可写,而元组一般用来只读,不修改#python中不允许修改元组的数据,也包括不能删除其中的元素. t1 = ('a','b','c','d','s','a') & ...

  8. 图片哈希概论及python中如何实现对比两张相似的图片

    Google 以图搜图的原理,其中的获取图片 hash 值的方法就是 AHash. 每张图片都可以通过某种算法得到一个 hash 值,称为图片指纹,两张指纹相近的图片可以认为是相似图片. 以图搜图的原 ...

  9. 哈希表,Java中的hashCode

    哈希表: 将我们所需的键通过哈希函数转换索引,然后存储在一个数组中. 哈希表是时间和空间之间的平衡,体现空间换时间的算法思想(联想到预加载,缓存等,有时候多存储,预处理缓存一些东西,带来时间复杂度的改 ...

  10. Python 中的集合 --set

    前言 在Python中,我们用[]来表示列表list,用()来表示元组tuple,那{}呢?{}不光可用来定义字典dict,还可以用来表示集合set. 集合 set 集合(set)是一个无序的不重复元 ...

随机推荐

  1. 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]

    为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期. [-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别 [链接] http ...

  2. 记录下uniapp的请求封装

    请求封装就是经常见的事但是从来没有记录过,今天来记录一下简单的封装 首先封装自己的域名,可以和封装写在一起,但是最好单独写一个独立的js文件 这边就以一个域名为例 let baseUrl='域名地址' ...

  3. Solution -「NOI Simu.」树

    \(\mathscr{Description}\)   给定 \(n\), 集合 \(\{a_m\}\), 称一棵无标号但儿子有序的有根树合法, 当且仅当叶子权值存在一个因数在 \(\{a_m\}\) ...

  4. API 风格选对了,文档写好了,项目就成功了一半!

    在前后端开发中,API文档和API风格设计是提高开发效率.减少沟通成本.确保系统稳定性的关键环节.一个清晰.易用的API文档可以帮助前端开发者快速理解接口的使用方法,而完善的测试则能尽早发现潜在问题, ...

  5. Mybatis插入数据后返回主键

    添加记录后获取主键ID,这是一个很常见的需求,特别是在一次前端调用中需要插入多个表的场景. 除了添加单条记录时获取主键值,有时候可能需要获取批量添加记录时各记录的主键值,MyBatis从3.3.1版本 ...

  6. .NetCore Docker test

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 ...

  7. rabbitmq部署及配置与验证-copy

    1. 场景描述 朋友项目需要弄个测试环境,稍微帮忙了下,系统不复杂,但是需要自己安装mysql.Reids.Es.RabbitMq等,Mq主要用在同步用户信息与发送站内消息和短信上,RabbitMq以 ...

  8. biancheng-Spring Cloud Alibaba Sentinel

    http://c.biancheng.net/springcloud/sentinel.html Sentinel 是由阿里巴巴中间件团队开发的开源项目,是一种面向分布式微服务架构的轻量级高可用流量控 ...

  9. C 简答题

    1.从C语⾔执⾏效率⽅便,简述下C语⾔采取了哪些措施提⾼执⾏效率.(14分 or 20分)(年年考,⾮常重要) ①使⽤指针:有些程序⽤其他语⾔也可以实现,但C能够更有效地实现:有些程序⽆法⽤其它语⾔实 ...

  10. Go语言【Gin框架】:JSON、AsciiJSON、PureJSON和SecureJSON的区别

    在Go语言中,JSON.AsciiJSON.PureJSON 和 SecureJSON 是Gin框架用于发送JSON响应的方法. 1. c.JSON 功能:将提供的数据序列化为标准的JSON格式,并将 ...