iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python数据结构之 set
  • 966
分享到

python数据结构之 set

数据结构pythonset 2023-01-31 05:01:10 966人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

 在数学概念中,被意为整合元素的定义区域在python中,set最大的作用是用来去重 set常见操作:In [158]: s ={1,1,1,1,2,22,33,3,3,3} In [159]: sOut[159]: {1,2, 3, 22

 

数学概念中,被意为整合元素的定义区域

python中,set最大的作用是用来去重

 

set常见操作:

In [158]: s ={1,1,1,1,2,22,33,3,3,3}

 

In [159]: s

Out[159]: {1,2, 3, 22, 33}

 

在定义一个集合的时候,只能使用大括号定义最少一个值,不然会被认为字典进行定义

在set中不能加入不可哈希的对象类型

 

In [161]:hash('a')

Out[161]:4952964627402403516

 

查看列表的哈希值,可以发现这个对象不可被哈希

In [162]: a =[1,2,3]

 

In [163]:hash(a)

---------------------------------------------------------------------------

TypeError                               Traceback (most recent call last)

<iPython-input-163-fe724719d9a1>in <module>()

----> 1hash(a)

 

TypeError:unhashable type: 'list'

 

set元素必须是可以哈希运算,但是需要元素可以迭代的

只要是能被迭代的元素都可以被加入到set中

In [171]:list(s)

Out[171]:['abc', b'abc']

 

In [172]: a =list(s)

 

In [173]: a

Out[173]:['abc', b'abc']

 

In [174]:set(a)

Out[174]:{'abc', b'abc'}

 

set.add增加元素

增加一个元素到set中,如果存在则什么都不做,因为存在其值

In [176]:s.add(1)

 

In [177]: s

Out[177]: {1,'abc', b'abc'}

 

In [178]:s.add(2)

 

In [179]: s

Out[179]: {1,'abc', 2, b'abc'}

set可以收集多个集合,同样的可以合并多个集合

 

使用update进行更新

 

In [180]:s.update({1,2,3},{5,7},(1,9,1))

In [181]: s

Out[181]: {1,'abc', 2, b'abc', 3, 5, 7, 9}

 

In [185]:s.update({1})

 

In [186]: s

Out[186]: {1,'abc', 2, b'abc', 3, 5, 7, 4, 9}

 

In [187]:s.update({10})

 

In [188]: s

Out[188]: {1,'abc', 2, b'abc', 3, 5, 7, 4, 9, 10}

 

set.remove删除

remove,将要删除的值转为hash,并按当前hash值定位其位置进行删除,这个hash将作为一个key进行操作

 

In [193]: s

Out[193]: {1,2, b'abc', 3, 5, 7, 4, 9, 10}

 

In [194]:s.remove(b'abc')

 

In [195]: s

Out[195]: {1,2, 3, 4, 5, 7, 9, 10}

 

查找元素的过程是非常快,因为是直接定义hash,并非是从头到尾去遍历

 

discard 从集合移除一个元素

与remove功能一样,但是discard并不会弹出异常:

remove 删除一个异常索引会报出keyerror

In [196]:s.remove('hahaha')

---------------------------------------------------------------------------

KeyError                                Traceback (most recent call last)

<ipython-input-196-185a5cf4c543>in <module>()

----> 1s.remove('hahaha')

 

KeyError:'hahaha'

 

discard 删除一个索引则不会返回任何信息

In [197]:s.discard('hahaha')

 

In [198]:

 

pop  随机挑选一个弹出并返回

pop只是随机弹出,并不能跟参数

In [202]:s.pop()

Out[202]: 2

 

In [203]:s.pop()

Out[203]: 3

 

In [204]: s

Out[204]: {4,5, 7, 9, 10}

 

clear  清除集合内所有元素,但是要考虑GC内存回收问题

 

set修改及查询

在set中没有修改的概念,只有两种操作:

删除元素 和追加元素

查询:非线性结构,无法进行索引查询

遍历:可以遍历所有可迭代的元素

 

成员运算符

成员运算符 in , not in ,效率很高

非线性结构如果找哈希值,时间复杂度相当于索引遍历列表大O(1)

看似通过值在遍历,实际上是用哈希值进行定位

 

可哈希的类型

数值型:int、float、complex

布尔类:True、False

字符串: str Bytes

Tuple、None都是不可变类型,称为哈希类型

 

对比list和set执行效率

 

查看set执行效率

导入模块timeit

import timeit

 

In [3]:%%timeit lst1 = set(range(1000))

  ...: a = -1 in lst1

  ...:

 

38.1 ns ± 0.0493 ns per loop(mean ± std. dev. of 7 runs, 10000000 loops each)

 

查看list效率

In [1]:%%timeit lst1 = list(range(1000))

  ...: a = -1 in lst1

  ...:

14.7 μs ± 99.3ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)


总结:

线性结构查询的复杂度是O(n), 随着规模增大耗时间越来越高

set和字典都属于特殊结构,其中都存了hash作为key,时间复杂度可以做到O(1),查询时间与数据规模无关

 

 

 

 


--结束END--

本文标题: python数据结构之 set

本文链接: https://www.lsjlt.com/news/188683.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python数据结构之 set
     在数学概念中,被意为整合元素的定义区域在python中,set最大的作用是用来去重 set常见操作:In [158]: s ={1,1,1,1,2,22,33,3,3,3} In [159]: sOut[159]: {1,2, 3, 22...
    99+
    2023-01-31
    数据结构 python set
  • python数据结构之quick_sor
    Quick sort , also known as partition-exchange sort, divides the data to be sorted into two separate parts by a single s...
    99+
    2023-01-30
    数据结构 python quick_sor
  • Java数据结构之Map与Set专篇讲解
    目录①只出现一次的数字②宝石与石头③坏键盘打字④复制带随机指针的链表①只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次...
    99+
    2024-04-02
  • python数据结构之链表
    '''' 链表的实现,单向链表 ''' '''建立节点''' class jd:     def __init__(self,data):         self.data = data         self.next = None...
    99+
    2023-01-31
    数据结构 链表 python
  • 五--python之数据结构(Data
    1、列表list:a=[value1,value2,value3,value4,…]方法论methods:list.append(x)  #列表追加,等同于a[len(a):] = [x]list.extend(L)   #列表加长,等同于...
    99+
    2023-01-31
    数据结构 python Data
  • JavaScript的Set数据结构详解
    目录1. 什么是 Set2. Set 构造函数2.1) 数组2.2) 字符串2.3) arguments2.4) Node...
    99+
    2024-04-02
  • 【数据结构】 Map和Set详解
    文章目录 🍀Map与Set的概念及场景🌳Map与Set模型介绍🎨Map 的使用📌Map说明📌Map.Entry ...
    99+
    2023-10-11
    数据结构 set Map 哈希 java
  • python数据结构之链表(linked
    目录 基础 知识 1.1 链表的基本结构 1.2 节点类和链表节点的定义 1.3 顺序打印和逆序打印 链表的基本操作 2.1 计算链表长度 2.2 从前,后插入数据 2.3 查找与删除 参考 1.基础 知识 1....
    99+
    2023-01-31
    数据结构 链表 python
  • Python数据结构之栈详解
    目录0. 学习目标1. 栈的基本概念1.1 栈的基本概念1.2 栈抽象数据类型1.3 栈的应用场景2. 栈的实现2.1 顺序栈的实现2.1.1 栈的初始化2.2 链栈的实现2.3 栈...
    99+
    2024-04-02
  • Python数据结构之图的存储结构详解
    一、图的定义 图是一种比树更复杂的一种数据结构,在图结构中,结点之间的关系是任意的,任意两个元素之间都可能相关,因此,它的应用极广。图中的数据元素通常被称为顶点 ( V e r t ...
    99+
    2024-04-02
  • JavaScript的Set数据结构是什么
    JavaScript的Set数据结构是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.&ensp;什么是 SetSet 可以简单的看作是数学上的集合。它是一系列无...
    99+
    2023-06-22
  • Python学习之day3数据结构之列表
                                                          数据结构之列表一、列表定义      列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。列表中的项目应包括在...
    99+
    2023-01-31
    数据结构 列表 Python
  • python数据结构之希尔排序
    def shell_sort(alist): n=len(alist) gap= int(n / 2) #步长 while gap>0: for i in range(gap,n): ...
    99+
    2023-01-30
    希尔 数据结构 python
  • Python数据结构之队列详解
    目录0. 学习目标1. 队列的基本概念1.1 队列的基本概念1.2 队列抽象数据类型1.3 队列的应用场景2. 队列的实现2.1 顺序队列的实现2.2 链队列的实现2.3 队列的不同...
    99+
    2024-04-02
  • 用Python实现数据结构之栈
    栈是最简单的数据结构,也是最重要的数据结构。它的原则就是后进先出(LIFO),栈被使用于非常多的地方,例如浏览器中的后退按钮,文本编辑器中的撤销机制,接下来我们用Python来具体实现这个数据结构。 栈中的方法 作为一个栈(用S来表示...
    99+
    2023-01-30
    数据结构 Python
  • Python基础之数据结构详解
    目录一、列表1.1 列表更新元素1.2 列表增加元素1.3 列表删除元素1.4 列表的其他操作二、元组2.1 删除元组2.2 元组的其他操作三、字典3.1 字典删除元素3.2 字典的...
    99+
    2024-04-02
  • Python数据结构之链表详解
    目录0.学习目标1.线性表的链式存储结构1.1指针相关概念1.2指针结构1.3结点1.4结点类2.单链表的实现2.1单链表的初始化2.2获取单链表长度2.3读取指定位置元素2.4查找...
    99+
    2024-04-02
  • python数据结构之面向对象
    目录1. 面向对象编程2. 构建类3. 继承3.1 继承案例前文学习: python数据结构:数据类型.python数据结构输入输出及控制和异常. 今天我们来学习面向对象编程,面向对...
    99+
    2024-04-02
  • python数据结构之搜索讲解
    目录1. 普通搜索2. 顺序搜索1.1 无序下的顺序查找1.2 有序下的顺序查找2.二分查找3.散列查找3.1 几种散列函数3.2 处理散列表冲突3.3 散列表的实现(加1重复)4....
    99+
    2024-04-02
  • python数据结构之选择排序
    选择排序(select_sort)是一个基础排序,它主要通过查找已给序列中的元素的最大或者最小元素,然后将其放在序列的起始位置或者结束位置,并通过多次这样的循环完成对已知序列的排序,在我们对n个元素进行操作时,我们至少需要n-1次。 de...
    99+
    2023-01-30
    数据结构 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作