zoukankan      html  css  js  c++  java
  • python学习笔记六——堆栈和队列

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

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

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

    列表的排序和反转

    list=["banana","apple","orange","grape"]
    list.sort()  #排序,按首字母升序排序
    print("Sorted list:",list)
    list.reverse()  #反转,反转列表中元素的排列顺序
    print("Reversed list:",list)
    [root@Dannyserver danny]# python e.py 
    Sorted list: ['apple', 'banana', 'grape', 'orange']
    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”。

     程序如下:

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

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

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

    list=["apple","banana","grape"]
    list.append("orange")  #队尾加入"orange"
    print(list)
    print("弹出的元素:",list.pop(0))   #弹出第一个元素
    print(list)
    [root@Dannyserver danny]# python f.py 
    ['apple', 'banana', 'grape', 'orange']
    弹出的元素: apple
    ['banana', 'grape', 'orange']
  • 相关阅读:
    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序
    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1
    050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句
    049 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 11 break语句
    048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和
    047 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 09 嵌套while循环应用
    046 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 08 for循环的注意事项
    045 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 07 for循环应用及局部变量作用范围
    剑指OFFER----面试题04.二维数组中的查找
    剑指OFFER----面试题03. 数组中重复的数字
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8205725.html
Copyright © 2011-2022 走看看