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
二叉搜索树的操作:查询、插入、删除
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/pandaboy1123/p/10098961.html

路飞学城Python-Day171相关推荐

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

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

  2. 路飞学城python全栈开发_[Python] 老男孩路飞学城Python全栈开发重点班 骑士计划最新100G...

    简介 老男孩&路飞学城Python全栈开发重点班课程,作为Python全栈教学系列的重头戏,投入了全新的课程研发和教学精力,也是Python骑士计划的核心教学,由ALEX老师开班镇守,一线技术 ...

  3. b站路飞学城python课梨视频项目代码

    @b站路飞学城python课梨视频项目代码 # -*- coding:utf-8 -*- import requests from lxml import etree import random im ...

  4. 路飞学城python开发入门学习

    零基础参加了路飞学城python七天入门集训,由于无相关基础知识,所以笔记简陋,大家将就着看看,欢迎批评指正. 1.第一个程序: print('Hello,World") 2. python ...

  5. 路飞学城python电子书_路飞学城-Python开发集训-第一章

    路飞学城-Python开发集训-第一章 1.本章学习心得.体会 我: 间接性勤奋. 我: 学习方法论:输入--输出---纠正 我: 对对对 走出舒适区, 换圈子, 转思路,投资自我加筹码. 我: 圈子 ...

  6. 路飞学城python全栈开发_python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)...

    昨日内容回顾 1. 为什么要做前后端分离?-前后端交给不同的人来编写,职责划分明确.-API (IOS,安卓,PC,微信小程序...)-vue.js等框架编写前端时,会比之前写jQuery更简单快捷. ...

  7. 路飞学城-python爬虫密训-第三章

    (一)学习心得 其实在没有正式学习python编程语言中,就知道模块是python最重要部分之一.虽然在前面HTTP协议跟IO多路复用都没有接触学的也是一知半解,scrapy模块比resquests模 ...

  8. 路飞学城-Python爬虫实战密训-第1章

    正式的开始学习爬虫知识,Python是一门接触就会爱上的语言.路飞的课真的很棒,课程讲解不是告诉你结论,而是在告诉你思考的方法和过程. 第一章,学习了如何爬取汽车之家以及抽屉登录并点赞. 1 impo ...

  9. 路飞学城-Python 爬虫实战密训-第 1 章

    本节学习体会: 鸡汤心得: 1.时代发展太快,要不断学习新东西,武装自己,才能跟得上时代的潮流,不然就是面临被pass的命运 2.要看清楚趋势,不要闭门造车 3.学习编程语言就跟学英语一样,方法很重要 ...

  10. 路飞学城-Python爬虫集训-第一章

    自学Python的时候看了不少老男孩的视频,一直欠老男孩一个会员,现在99元爬虫集训果断参与. 非常喜欢Alex和武Sir的课,技术能力超强,当然讲着讲着就开起车来也说明他俩开车的技术也超级强! 以上 ...

最新文章

  1. 第一次作业:阅读优秀博文谈感想
  2. 全球及中国抗痛风剂行业发展调研及投资可行性评估报告2021-2027年版
  3. 性质极其恶劣!针对基因编辑婴儿,怀进鹏这样说…
  4. 爬壁除锈机器人_浙大研制出除锈爬壁机器人
  5. Qt工作笔记-QByteArray与自定义结构体之间的转化(可用于网络传输,以及数据回调)
  6. ashx文件 验证是否登录_汇总丨增值税综合服务平台登录常见问题解答
  7. linux程序改ip地址吗,如何在Linux中从C设置IP地址
  8. PowerShell 学习笔记 - 2 PS Module
  9. 【Pygame】屏幕图形绘制
  10. 基于音形码的中文字符串相似度算法(转)
  11. LINUX修改网卡MAC地址
  12. 实验二 数据库和表的操作
  13. OPNsense - 多功能高可靠易使用的防火墙(四)
  14. android视频播放器课程设计,ANDROID视频播放器课程设计.pdf
  15. Linux系统配置安装Nginx反向代理服务器
  16. xsmax进入dfu模式_iPhoneXSMax怎么强制重启-如何进入DFU模式
  17. 分享112个HTML娱乐休闲模板,总有一款适合您
  18. ATUO CAD 如何延伸线段?
  19. 在main.js引入模块时,无法找到模块“”的声明文件
  20. python中pytest教程_Pytest安装新手详细教程

热门文章

  1. div不继承父类样式_Python编程思想(27):类的继承
  2. 李宏毅老师ML_HW1——PM2.5预测
  3. java单例模式 uml_Java设计模式系列之单例模式
  4. 电脑故障扫描修复软件_电脑故障分析:电脑安装软件提示没有权限的解决方法...
  5. Vue项目中 css样式的作用域(深度作用选择器)
  6. 1+X web中级 Laravel学习笔记——视图和模型
  7. LeetCode 1936. 新增的最少台阶数
  8. LeetCode 1768. 交替合并字符串
  9. [Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
  10. LeetCode 681. 最近时刻