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']
  • 相关阅读:
    RecyclerView与各种异步图片加载框架不兼容的问题
    课内上机实验3——括号匹配(栈)
    课内上机实验3——删除重复元素
    课内上机实验3——数组内移动0元素至末尾
    课内上机实验3——M集合问题(队列)
    递归实践1——Cnm组合数计算
    【转】Quine的编写
    【转】fork函数详解
    【转】Makefile详解
    VC++6.0程序安装
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8205725.html
Copyright © 2011-2022 走看看