Evernote Export

线性结构:
python的列表操作
列表是如何存储的:顺序存储的,是一块连续的内存,内存是一堆格子,列表是一串连续的编号
32位机器上一个整数占4个字节
数组和列表有2点不同,1.数组的元素类型要求是相同的;2.数组长度固定
列表:1.python中列表的元素类型可以不同(python列表中存储的不是数值而是地址);2.python列表会根据输入的长度自动根据序列来递增列表
列表的append时间复杂度是O(1)
列表的插入和删除的时间复杂度是O(n)
栈的结构:
栈是一个数据集合,可以理解为只能在一端插入或进行删除操作的列表
栈的特点:后进先出LIFO(last in first out)
栈的概念:栈顶、栈底
栈的基本操作:
    进栈(压栈):push
    出栈:pop
    取栈顶:gettop
栈的应用
括号匹配问题:给一个字符串,其中包括小括号、中括号、大括号、求该字符串中的括号是否匹配
队列
队列是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除
进行插入的一端称为队尾(rear),插入动作称为进队或入队
进行删除的一端称为队头(front),删除动作称为出队
队列的性质:先进先出(First-in, First-out)
迷宫的两种方式
栈-深度优先搜索
思路:从一个节点开始,任意找下一个能走的点,当找不到能走的点,退回上一个点寻找是否有其他方向的点
使用栈存储当前路径
队列-广度优先搜索
思路:从一个节点开始,寻找所有接下来能继续走的点,继续寻找,直到找到出口
使用队列存储当前正在考虑的节点
链表
链表是一种线性数据结构,链表是由一系列节点组成的元素集合。
每个节点包含两个部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。
创建链表:
    头插法
    尾插法
复杂度分析
按元素值查找O(n)
按下标查找O(n)
在某一元素中插入O(1)
删除元素O(1)
链表在插入和删除的操作上明显快于顺序表
链表的内存快于灵活的分配:试利用链表重新实现栈和队列
链表这种链式存储的数据结构对树和图的结构有很大的启发性
哈希表(散列表)
哈希表通过哈希函数来计算数据存储位置的数据结构,通常支持一下操作
insert(key,value):插入键值对(key,value)
get(key):如果存在键为key的键值则返回其value,否则返回空值
delete(key):删除key的键值对
直接寻址表
当关键字的全域U比较小时,直接寻址是一种简单而有效的方法
直接寻址的技术缺点:
当域U很大时,需要消耗大量内存,很不实际
如果域U很大而实际出现的key很少,则大量空间被浪费
无法处理关键字不是数字的情况
哈希表,是一种线性表的存储结构。哈希表由一个直接寻址表和一个哈希函数组成,哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标
假设有一个长度为7的哈希表,哈希函数h(k) = k%7,元素集合{14,22,3,5}的存储方式如下图
哈希冲突
由于哈希的大小是有限的,而要存储的值的总数量是无限的,因此对于任何哈希函数,都会出现两个不同的值但是映射到同个位置上的情况,这种情况称为哈希冲突
解决哈希冲突方法
1.开放寻址法:如果哈希函数返回的位置已经有值,则可以向后探查新的位置来存储这个值
线性查探:如果位置被占用,则探查i+1,i+2...
二次查探:如果位置i被占用,则探查i+1^2,i-1^2,i+2^2,i-2^2
二度哈希:有n个哈希函数,当使用第一个哈希函数h1发生冲突时,则尝试使用 h2,h3...
2.拉链法:哈希表每个位置都连接一个链表,当冲突发生时,冲突的元素将被加到该位置链表的最后
树与二叉树
树是一种结构,比如目录结构
树是一种可以递归定义的数据结构
树是由n个节点组成的集合
    如果n=0,那这是一颗空树
    如果n>0,那存在1个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树
二叉搜索树
二叉搜索树是一颗二叉树且满足性质:设x是二叉树的一个节点。如果y是x左子树的一个节点,那么y.key<=x.key
如果y是x右子树的一个节点,那么y.key>=x.key
二叉搜索树的操作:查询、插入、删除
 
 
 
 
 
 
 
 
 
 
 
 
 

路飞学城Python-Day171的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. C# DataGridView 使用

    之前咩有做个界面的东西,更没有使用过DataGirdView 这个控件. 现在本来是准备用DeV呢,结果发现我的DEV没有注册,只好暂时用这个DataGridView来替代使用了. 我现在要是设置两列 ...

  2. xdebug PHPStrom调试 安装

    1.publi目录下新建info文件: 2.搜索是否已经安装过xdebug 3.下载安装 >[info] 自动查找相对应的版本 == 打开php.ini 原始: [XDebug]xdebug.p ...

  3. GOF23设计模式之原型模式

    GOF23设计模式之原型模式 1)通过 new 产生一个对象需要飞船繁琐的数据准备或访问权限,则可以使用原型模式. 2)就算 java 中的克隆技术,以某个对象为原型,复制出新的对象.显然,新的对象具 ...

  4. Spring MVC-Hello World示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_hello_world_example.htm 说明:示例基于Spring MVC ...

  5. mysql选择上一条、下一条数据记录,排序上移、下移、置顶

    1.功能须要 完毕列表排序上移,下移,置顶功能.效果例如以下图所看到的: 2设置思路 设置一个rank为之间戳,通过选择上移,就是将本记录与上一条记录rank值交换,下移就是将本条记录与下一条记录ra ...

  6. Scrapy源代码分析-经常使用的爬虫类-CrawlSpider(三)

    CrawlSpider classscrapy.contrib.spiders.CrawlSpider 爬取一般站点经常使用的spider.其定义了一些规则(rule)来提供跟进link的方便的机制. ...

  7. Github 基本使用

    github GitHub是一个通过Git进行版本控制的软件源代码托管服务,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath.PJ Hyett和Tom P ...

  8. spring注入对象类型的属性

    一.1.创建service类和Dao类 (1)在service中得到dao对象 2.具体实现过程 (1)在service里边把dao作为类型属性 (2)生成dao类型属性的set方法 public c ...

  9. Python中的traceback模块

    traceback模块被用来跟踪异常返回信息. 如下例所示: 1.直接打印异常信息 import traceback try: raise SyntaxError, "traceback t ...

  10. CSS Flexbox 弹性盒子模型

    CSS Flexbox 弹性盒子模型 设置元素样式为 display: flex 或 display: inline-flex, 让元素变成flex容器, 从而可以通过flex模式布局它的子元素. f ...