Python之哈希表-哈希表原理

这篇具有很好参考价值的文章主要介绍了Python之哈希表-哈希表原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python之哈希表-哈希表原理

集合Set

  • 集合,简称集。由任意个元素构成的集体。高级语言都实现了这个非常重要的数据结构类型。
  • Python中,它是可变的、无序的、不重复的元素的集合

初始化

  • set() -> new empty set object
  • set(iterable) -> new set object

元素性质

  • 去重:在集合中,所有元素必须相异
  • 无序:因为无序,所以不可索引
  • 可哈希:Python集合中的元素必须可以hash,即元素都可以使用内建函数hash
  • 目前学过不可hash的类型有:list、set、bytearray
  • 可迭代:set中虽然元素不一样,但元素都可以迭代出来

增加

  • add(elem)
    • 增加一个元素到set中
    • 如果元素存在,什么都不做
  • update(*others)
    • 合并其他元素到set集合中来
    • 参数others必须是可迭代对象
    • 就地修改

删除

  • remove(elem)
    • 从set中移除一个元素
    • 元素不存在,抛出KeyError异常。为什么是KeyError?
  • discard(elem)
    • 从set中移除一个元素
    • 元素不存在,什么都不做
  • pop() -> item
    • 移除并返回任意的元素。为什么是任意元素?
    • 空集返回KeyError异常
  • clear()
    • 移除所有元素

修改

  • 集合类型没有修改。因为元素唯一。如果元素能够加入到集合中,说明它和别的元素不一样。
  • 所谓修改,其实就是把当前元素改成一个完全不同的元素,就是删除加入新元素。

索引

  • 非线性结构,不可索引。

set() # 空集
{}, type({}) # 空字典
# 返回结果:({}, dict)
set(range(5)), {1, 2, 'abc'}, set((1, 2, 3)), {*range(5), *[1, 2, 3]} 
# 集合 集合是去重的,根据此例体会一下。
# 返回结果:({0, 1, 2, 3, 4}, {1, 2, 'abc'}, {1, 2, 3}, {0, 1, 2, 3, 4})
{'1', 1, '1', 1, 2}, {1, (1,), 1, (1,)} 
# 集合是无序的 去重
# 返回结果:({'1', 1, 2}, {(1,), 1})
{1, *'abc', *(1, 2), *[1]}
# 不可哈希的可以解构
# 返回结果:{1, 2, 'a', 'b', 'c'}
{1, (1,), (), '', b'', None, True, False, range(5)}
# 集合中可放的值
# 返回结果:{'', (), (1,), 1, False, None, b'', range(0, 5)}
set(range(5))
# 这个是把range对象给set集合使用
# 返回结果:{0, 1, 2, 3, 4}
list(range(5))
# 这个是把range对象给list列表使用
# 返回结果:[0, 1, 2, 3, 4]
{range(5)}
# 这个得作用是集合中放了一个range对象,但是没有使用
# 返回结果:{range(0, 5)}
x = set()
x
# x等于一个空集
# 返回结果:set()
x.add(1)
x
# 集合中增加元素
# 返回结果:{1}
x.add('abc')
x
# 集合中增加元素
# 返回结果:{1, 'abc'}
x.add(1)
x
# 体会去重的概念
# 返回结果:{1, 'abc'}
x.update(range(3), 'abc')
x
# 相当于把括号中的元素都拿出来加入到x集合中
# 返回结果:{0, 1, 2, 'a', 'abc', 'b', 'c'}
x.update([1, 'abc', 2, 'xyz']) 
# x.update却成功的添加到x集合中,思考一下为什么,可以翻到最下方的报错中有一个报错是x.add报错。
x
# 返回结果:{0, 1, 2, 'a', 'abc', 'b', 'c', 'x', 'xyz'}
  • 因为add是把整个列表都加到集合中,因为列表不可哈希所以加不进去
  • update是把列表中的所有内容,依次拿出添加到x集合中,所以可以加入
hash(1), hash('abc')
# 判断能不能哈希,可以使用hash函数进行测试一下
# 返回结果:(1, -2803511482477406815)
x.remove('a')
x
# 删除
# 返回结果:{0, 1, 2, 'abc', 'b', 'c', 'x', 'xyz'}
x.clear()
# clear清空集合,慎用!!!
x.pop()
# 弹出
# 返回结果:0
x.discard(-1)
# discard 如果删除的值没有,不会报错
-1 in x
# -1在不在x中,返回值True或False
# 返回结果:False
'abc' in x
# 'abc'在不在x中,返回值True或False
# 返回结果:True

Python之哈希表-哈希表原理,Python,python,开发语言文章来源地址https://www.toymoban.com/news/detail-722763.html


报错

{1, 'abc', (1, 2), [1]}
# 列表不可哈希
# 返回结果:TypeError: unhashable type: 'list'
{1, {}}
# 字典不可哈希
# 返回结果:TypeError: unhashable type: 'dict'
{{1}}
# 集合也不可哈希
# 返回结果:TypeError: unhashable type: 'set'
{{1}, [1], {}}
# 集合中不能放的元素
x.add([1, 'abc', 2, 'xyz'])
# x.add提示列表不可哈希
# 返回结果:TypeError: unhashable type: 'list'
hash([])
# 列表不可哈希
# 返回结果:TypeError: unhashable type: 'list'
x.remove(-1)
# 哈希表是无序的,不能使用-1,Key唯一的不重复的
# 返回结果:KeyError: -1

到了这里,关于Python之哈希表-哈希表原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化理论基础(2)—开发语言之Python

    一、知识汇总 掌握 Python 编程语言需要具备一定的基础知识和技能,特别是对于从事自动化测试等领域的工程师。以下是掌握 Python 的一些关键方面: 基本语法: 理解 Python 的基本语法,包括变量、数据类型、运算符、条件语句、循环语句等。 数据结构: 熟悉并能够使用

    2024年01月18日
    浏览(61)
  • 【Python爬虫开发基础⑭】Scrapy架构(组件介绍、架构组成和工作原理)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️前面比较重要的 基础内容 : 【Python爬虫开发基础⑧】XPath库及其基本用法 【Python爬虫开发基础⑨】jsonpath和BeautifulSoup库概述及

    2024年02月17日
    浏览(44)
  • [开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

    写在前面 :Python和C++中的赋值与深浅拷贝,由于其各自语言特性的问题,在概念和实现上稍微有点差异,本文将这C++和Python中的拷贝与赋值放到一起,希望通过对比学习两语言实现上的异同点,加深对概念的理解。 C++中所谓的 浅拷贝 就是由(系统默认的) 拷贝构造函数对

    2024年02月02日
    浏览(57)
  • Python中的哈希表

    哈希表是一种常用的数据结构,广泛应用于字典、散列表等场合。它能够在O(1)时间内进行查找、插入和删除操作,因此被广泛应用于各种算法和软件系统中。 哈希表的实现基于哈希函数,将给定的输入映射到一个固定大小的表格中,每个表项存储一个/值对。哈希函数

    2024年02月14日
    浏览(30)
  • [开发语言][python][c++]:C++中的this指针和Python中的Self -- 26岁生日

    以朋友的新岁祝福开篇,祝笔者也祝大家☺️: 之前一直对 C++ 中的 this 和 python 中的 self 到底是什么关系,为什么 C++ 要显式的写出来,python 则不需要? 模糊不清,趁着周末整理一下相关结论,希望本篇文章可以解答这些问题,同时对C++和Python中的类加深些理解。 python 当

    2024年01月24日
    浏览(71)
  • ApeWorX: 新的基于 Python 语言的智能合约开发框架

    Brownie 是 Python 开发人员经常使用智能合约框架。 现在出现了一个 Brownie 的继任者,可以让 Python Web3 开发人员获得更好的体验。 在本文中,我将讨论这个 Brownie 的继任者 ApeWorX,也称为“Ape”。 ApeWorX 是一个基于 Python 的智能合约开发和部署框架,有很强的可定制性和安全的

    2024年02月05日
    浏览(45)
  • Python数据结构:哈希表

    散列(哈希)是电脑科学中一种对资料的处理方法,通过某种特定的函数/算法(称为散列函数/算法)将要检索的项与用来检索的索引(称为散列,或者散列值)关联起来,生成一种便于搜索的数据结构(称为散列表)。 哈希表是什么 哈希表(散列表)是根据键(Key)直接访

    2024年02月12日
    浏览(37)
  • Hash(哈希)算法-Python实现

    哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的

    2023年04月15日
    浏览(36)
  • OpenCV项目开发实战--进行人脸变形 原理—并附实例Python/C++代码实现

    文末附基于Python和C++两种方式实现的测试代码下载链接 在本教程中,我们将学习如何使用 OpenCV 将一张脸变成另一张脸。 在我之前的文章中,我介绍了面部关键点检测和Delaunay 三角测量。最好查看这些帖子以更好地理解这篇文章。 图像变形首先在电影 Willow 中广泛使用,使用

    2024年02月09日
    浏览(70)
  • Python 哈希表的实现——字典

    哈喽大家好,我是咸鱼 接触过 Python 的小伙伴应该对【字典】这一数据类型都了解吧 虽然 Python 没有显式名称为“哈希表”的内置数据结构,但是字典是哈希表实现的数据结构 在 Python 中,字典的键(key)被哈希,哈希值决定了键对应的值(value)在字典底层数据存储中的位

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包