哈希表(实现 Python 中的集合 set)
# -*- 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)的更多相关文章
- python 中的集合set
python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...
- Python中的集合类型分类和集合类型操作符解析
集合类型 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements). Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...
- python学习之【第七篇】:Python中的集合及其所具有的方法
1.前言 python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重. 集合是无序的,集合中的元素必须是不可变类型.集合可以作为字典的key. ...
- 8、python中的集合
集合是python中无序.可变的数据结构.集合与字典类似,集合中的元素必须是可哈希的(等同于字典中的键),也就是说集合中的元素是唯一.不可变的数据类型.这里前面说集合可变,后面又说集合中的元素不可变是 ...
- 14.python中的集合
什么是集合?正如其字面的意思,一堆东西集中合并到一起.乍一听貌似和容器没什么差别,嗯,好吧,集合也算是一种容器. 在学习这个容器有什么不同之前,先看看集合是如何创建的: a = set() #可变集合 ...
- python中的集合
在python中,普通集合是可变数据类型 通过以下案例说明: >>> s = {1, 2, 3, 4} >>> id(s) 2108634636808 >&g ...
- python中的集合、元组和布尔
#元组,元组跟列表一样,只不过列表可读可写,而元组一般用来只读,不修改#python中不允许修改元组的数据,也包括不能删除其中的元素. t1 = ('a','b','c','d','s','a') & ...
- 图片哈希概论及python中如何实现对比两张相似的图片
Google 以图搜图的原理,其中的获取图片 hash 值的方法就是 AHash. 每张图片都可以通过某种算法得到一个 hash 值,称为图片指纹,两张指纹相近的图片可以认为是相似图片. 以图搜图的原 ...
- 哈希表,Java中的hashCode
哈希表: 将我们所需的键通过哈希函数转换索引,然后存储在一个数组中. 哈希表是时间和空间之间的平衡,体现空间换时间的算法思想(联想到预加载,缓存等,有时候多存储,预处理缓存一些东西,带来时间复杂度的改 ...
- Python 中的集合 --set
前言 在Python中,我们用[]来表示列表list,用()来表示元组tuple,那{}呢?{}不光可用来定义字典dict,还可以用来表示集合set. 集合 set 集合(set)是一个无序的不重复元 ...
随机推荐
- RxSqlUtils(base R2dbc)
一.前言 随着 Solon 3.0 和 Solon-Rx 3.0 发布,又迎来了的 RxSqlUtils 扩展插件,用于"响应式"操作数据库.RxSqlUtils 是基于 R2db ...
- Hugo 静态博客部署
I. 前提条件 1.1 安装 Hugo 1.1.1 Windows 1.下载 Hugo(建议下载扩展版):Hugo(github.com) 2.解压 Hugo 压缩包到指定目录. 3.[Win + R ...
- Linux 终端
在 Linux 系统中,终端设备通常分为主设备和从设备.这是一种特殊的设备对的概念,其中: 主设备: 主设备也称为 "master device". 它是终端设备的控制端,用于与用 ...
- 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷
你好,我是 Kagol,个人公众号:前端开源星球. 2024年,我做前端开发工作满10年啦! 这10年我一直在开发前线,做过电商项目.广告平台.项目管理系统等业务,目前主要专注于前端组件库建设和开源社 ...
- Solution Set -「Public NOIP Round #3 (Div. 1)」
\(\mathscr{A}\sim\) 移除石子 Tags:「A.构造」「C.细节」 "显然" 直接按 \((x,y)\) 二元组排序后两两组成正方形! 喜提 \(90\t ...
- RPC简介及框架选择-copy
简单介绍RPC协议及常见框架,对比传统restful api和RPC方式的优缺点.常见RPC框架,gRPC及序列化方式Protobuf等 HTTP协议 http协议是基于tcp协议的,tcp协议是流式 ...
- nginx.conf参数优化详解
1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...
- 280:监控和管理LINUX进程
- 智算引领 AI启航,中国电信天翼云助推辽宁数智发展!
近日,中国电信辽宁公司"智算引领 AI启航"新质生产力赋能辽宁新时代"六地"建设大会在沈阳圆满落幕.辽宁省工业和信息化厅,省国资委,省数据局,省农业农村厅,沈阳 ...
- centos系统chrony时间同步
centos系统chrony时间同步 概要 chrony 是网络时间协议(Network Time Protocol )的通用实现.它不但可以提供保持系统时间与 NTP 时钟服务器同步的服务,还能作为 ...