4.2.3 列表的查找、排序、反转

  list列表可以进行添加、删除操作,此外List列表还提供了查找元素的方法。list列表的查找提供了两种方式,一种是使用index方法返回元素在列表中的位置,另一种方法是使用关键字“in”来判断元素是否存在列表中。

  1. list=["apple","banana","grape","orange"]
  2. print(list.index("grape")) #打印grape的索引
  3. print(list.index("orange")) #打印orange的索引
  4. print("orange" in list) #判断orange是否在列表中
  1. [root@Dannyserver danny]# python d.py
  2.  
  3. True

列表的排序和反转

  1. list=["banana","apple","orange","grape"]
  2. list.sort() #排序,按首字母升序排序
  3. print("Sorted list:",list)
  4. list.reverse() #反转,反转列表中元素的排列顺序
  5. print("Reversed list:",list)
  1. [root@Dannyserver danny]# python e.py
  2. Sorted list: ['apple', 'banana', 'grape', 'orange']
  3. Reversed list: ['orange', 'grape', 'banana', 'apple']

注意:在python中,列表是有类list来实现的。使用函数help(list)查看list类的定义,可以快速了解列表所包含的方法。help函数同样适用于其他python类。

列表的常用方法,具体前面都有讲到

append(object):  在列表的末尾添加一个对象(元素)object

insert(index,object):  在指定的索引index处,添加一个对象object

remove(value):  删除列表中首次出现的value

pop([index]):  删除索引index指定的值;如果不指定,删除列表最后一个元素

extend(iterable):  将iterable指定的元素添加到列表的末尾

index(value,[start,[stop]]):  返回value出现在列表中的索引

sort(cmp=None,key=None,reverse=False):  列表的排序

reverse():  列表的反转

4.2.4 列表实现堆栈和队列

  堆栈和队列是数据结构中常用的数据结构,列表可以用来实现堆栈和队列。

  堆栈是指最先进入堆栈的元素最后才输出,符合“后进先出”的顺序。栈的插入、弹出是通过栈首指针控制的。插入一个新的元素,指针移到新元素的位置;弹出一个元素,指针移到下面一个元素的位置,即原堆栈倒数第2个元素的位置,该元素成为栈顶元素。

  队列是指最先进入队列的元素最先输出,符合“先进先出“的顺序。队列的插入、弹出是分别通过队首指针和队尾指针控制的。插入一个新的元素,队尾指针移到新元素的位置;弹出一个元素,队首指针移到原队列中第2个元素的位置,该元素成为队列的第1个元素。

  使用列表的append()、pop()方法可以模拟这两个数据结构。

  首先分析一下堆栈的实现,调用append()可以把一个元素添加到堆栈的顶部,调用pop()方法把堆栈中最后一个元素弹出来。

  假设有一个堆栈[“apple”,"banana","grape"],要向堆栈中添加一个新的元素"orange"。如图所示:

  “apple”是列表中第一个进入的元素,所以置于堆栈的最底端。调用append("orange")后,程序把"orange"元素插到堆栈的顶部。此时栈的指针移动到元素"orange",栈中包含4个元素,“orange”置于堆栈的顶部。然后调用pop(),弹出顶部元素“orange”,栈的指针移到“grape”。

程序如下:

  1. list=["apple","banana","grape"]
  2. print("原堆栈元素:", list)
  3. list.append("orange") #将orange压入堆栈
  4. print(list)
  5. print("弹出的元素:",list.pop()) #从堆栈中弹出最后压入的元素
  6. print(list)
  1. [root@Dannyserver danny]# python f.py
  2. 原堆栈元素: ['apple', 'banana', 'grape']
  3. ['apple', 'banana', 'grape', 'orange']
  4. 弹出的元素: orange
  5. ['apple', 'banana', 'grape']

  队列也是通过调用append()和pop()方法实现的。pop()的调用方式有所不同,通过调用pop(0)弹出队列最前面的元素。假设有一个队列["apple","banana","grape"],要向队列中添加一个新的元素“orange”。如图:

  “apple”是列表中第一个进入的元素,所以置于队列的最前端。调用append("orange")后,程序把"orange"元素插到队列的尾部,队尾指针移到元素"orange"。此时列表中包含4个元素,"orange"置于队列的尾部。然后调用pop(0),弹出队列最前面的元素"apple",队首指针移动到元素“banana”。从而实现了“先近先出”的队列结构。代码如下:

  1. list=["apple","banana","grape"]
  2. list.append("orange") #队尾加入"orange"
  3. print(list)
  4. print("弹出的元素:",list.pop(0)) #弹出第一个元素
  5. print(list)
  1. [root@Dannyserver danny]# python f.py
  2. ['apple', 'banana', 'grape', 'orange']
  3. 弹出的元素: apple
  4. ['banana', 'grape', 'orange']

python学习笔记六——堆栈和队列的更多相关文章

  1. Python学习笔记六

    Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...

  2. python学习笔记六 面向对象相关下(基础篇)

    面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...

  3. python学习笔记六 初识面向对象上(基础篇)

    python面向对象   面向对象编程(Object-Oriented Programming )介绍   对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都知道OOP的三大特性 ...

  4. python学习笔记——multiprocessing 多进程组件-队列Queue

    1 消息队列 1.1 基本语法 消息队列:multiprocessing.Queue,Queue是对进程安全的队列,可以使用Queue实现对进程之间的数据传输:还有一个重要作用是作为缓存使用. Que ...

  5. Python学习笔记六--文件和输入输出

    6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. ...

  6. Python学习笔记(六)Python的列表生成式、生成器

    列表生成式 List Comprehensions 列表生成式是Python内置的非常简单却强大的可以用来创建list的生成式. 简单的数值范围的list可以使用一下方式生成: >>> ...

  7. python学习笔记(六)、类

    Python与java.c++等都被视为一种面向对象的语言.通过创建自定义类,用于处理各种业务逻辑.面向对象有封装.继承.多态三个特征,这也是面子对象语言的通用特征. 1 封装 封装,是值向外部隐藏内 ...

  8. Python学习笔记六:数据库操作

    一:Python操作数据库的流程 二:开发环境准备 1:开发工具PyCharm 2:Python操作mysql的工具:需要安装Python-Mysql Connector,网址:https://sou ...

  9. Python学习笔记六:文件处理

    一:打开文件 open(name,mode,[bufferSize]) name:文件路径 mode:文件打开方式 二:文件读取 read()方法:可以一次读取文件的全部内容,Python把内容读到内 ...

随机推荐

  1. Oracle Drop表并未直接删除 drop table xx purge

    drop表 执行drop table xx 语句     drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除.     通 ...

  2. mysql各数据类型的存储范围

    文章转自 https://www.cnblogs.com/web21/p/6016120.html mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介 ...

  3. P1-Linux下安装MySQL及登录用户配置

    Linux下安装MySQL及登录用户配置 环境:Centos7.4    Mysql5.6 1. 查询是否安装 MySQL和MariaDB rpm -qa | grep -i mysql rpm -q ...

  4. gensurf

    我来做个福利吧,首先将模糊文件.fis,加载到workspace中,这个大家都会,利用上面说的那个例子a = readfis('tipper');gensurf(a)这样默认的就是前两个输入的曲线,要 ...

  5. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  6. eureka client服务续约源码分析

    必备知识: 1.定时任务 ScheduledExecutorService public class demo { public static void main(String[] args){ Sc ...

  7. MySQL(十一)视图及存储过程

    一.视图 视图是虚拟的表,它只包含使用时动态检索数据的查询. 1.使用视图的好处 ①重用SQL语句: ②简化复杂的SQL操作(可以方便的重用它而不必知道它的基本查询细节): ③使用表的组成部分而不是整 ...

  8. Javascript 对象复制

    如果对象只是一个数据集,可采用json化再反json化的方式克隆一个对象,这个过程会丢失对象的方法.效率比较低. 可以采用如下递归的方式复制一个对象. function clone(target) { ...

  9. Nginx-PHP优化设置 + lnmp调优的关键影响因素 + php-fpm + nginx返回码 + tcp调优 + 最大文件描述符

    https://www.cnblogs.com/zengkefu/p/5602473.html最大文件描述符 https://blog.csdn.net/fanren224/article/detai ...

  10. Luogu4423 BJWC2011 最小三角形 平面最近点对

    传送门 题意:给出$N$个点,求其中周长最小的三角形(共线的也计算在内).$N \leq 2 \times 10^5$ 这道题唤起了我对平面最近点对的依稀记忆 考虑平面最近点对的分治,将分界线两边的求 ...