wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > 【wns9778.com】数据结构-Python3.7<三>

原标题:【wns9778.com】数据结构-Python3.7<三>

浏览次数:78 时间:2019-05-10

上一篇:流程控制-Python<二>

2、Python序列

  1. 因为列表具有pop、append、insert方法,因此列表可以当作堆、栈使用。由于性能问题,不建议当作堆。(堆:队列优先,先进先出(FIFO—first in first out)栈:先进后出(FILO—First-In/Last-Out))
  2. 列表的pop、insert方法,使得列表可以当作队列使用,先入先出,但是在列表的开头做插入或者弹出都非常慢,因为要移动其他元素。需要用到队列,建议使用collections.deque。
  3. 可以使用map来创建队列,map(func,*iterables)

    >>> list(map(lambda x:x**2,range(23)))
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484]
    
  4. 创建列表的"[ ]",可以包含复杂的表达式,和嵌套函数

    >>> test=[ x**2 for x in range(3) ]
    >>> test
    [0, 1, 4]
    
  5. 列表删除元素方法及删除列表方法:remove、pop、clear、del。remove与pop都只能删除一个元素、clear清空列表。del可以切片删除。

    >>> test=[0,1,2,3,4]
    >>> test.remove(3)
    >>> test
    [0, 1, 2, 4]
    
    >>> test=[0,1,2,3,4]
    >>> test.pop()
    4
    >>> test
    [0, 1, 2, 3]
    >>>
    >>> test.pop(1)
    1
    >>> test
    [0, 2, 3]
    >>>
    
    >>> test=[0,1,2,3,4]
    >>> test.clear()
    >>> test
    []
    
    >>> test=[0,1,2,3,4]
    >>> del test[0:2]
    >>> test
    [2, 3, 4]
    >>> del test[:]
    >>> test
    []
    >>> del test
    >>> test
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'test' is not defined
    >>>
    
  6. 序列主要以下几种类型:

    • 3种基本序列类型(Basic Sequence Types):list、tuple、range (补:range() 函数返回的结果是一个整数序列的对象,而不是列表。tuple就是元组)
    • 专门处理文本的附加序列类型(Text Sequence Types):str
    • 专门处理二进制数据的附加序列类型(Binary Sequence Types): bytes、bytearray、memoryview

    按照序列是否可被改变分类:

    • 可变序列: list
    • 不可变序列:tuple、str
  7. tuple元组是标准的序列类型,不支持个别项目分配

    >>> a=6,7,8,89,9
    >>> a
    (6, 7, 8, 89, 9)
    >>> a[0]=2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>>
    

    但是tuple可以包含可变对象

    >>> a=43,4,5,6,[4,4,4,4]
    >>> a
    (43, 4, 5, 6, [4, 4, 4, 4])
    >>> a[4][0]=99999
    >>> a
    (43, 4, 5, 6, [99999, 4, 4, 4])
    >>>
    
  8. tuple的创建,当为空元素和一个元素的情况

    >>> a=()
    >>> a
    ()
    >>> a=0,
    >>> a
    (0,)
    >>>
    

    tuple的解压缩

    >>> a,b,c=3,4,5
    >>> a
    3
    >>> b
    4
    >>> c
    5
    >>>
    

    tuple的打包

    >>> a=3,4,5,5
    >>> a
    (3, 4, 5, 5)
    >>>
    
  9. 字典的键必须是不可变的对象,例如字符串、数字、元组且元祖不能直接或间接的包含可变对象。字典的健不可以为列表,因为列表可以使用索引分配、del 切片 、append、extend等方法更改list对象。

  10. 想要在相反的情况下循环一个列表,可以使用reversed函数

    >>> for i in reversed(range(1,6,1)):
    ...     print(i)
    ...
    5
    4
    3
    2
    1
    >>>
    
  11. is 、 is not 判断元素是否相等

    >>> a=[]
    >>> b=[]
    >>> a is b
    False
    >>> a=9
    >>> b=9
    >>> a is b
    True
    >>> a is not b
    False
    >>>
    
  12. in、not in 判断是否在某个序列里

    >>> test="basecee"
    >>> 'a' in test
    True
    >>> 'f' in test
    False
    >>> 'f' not in test
    True
    >>> "ba" in test
    True
    
  13. 所有的比较运算符都有相同的优先级,比所有的数值运算符都要低。 这里‘< ,>’优先级低于‘ ’

    >>> 6 8>12
    True
    >>> 13<6 9
    True
    >>>
    
  14. 布尔运算符的优先级低于比较运输符

    >>> 12==10 or 10==10
    True
    >>> 10>5 and 9<0
    False
    >>>
    

  序列是一种数据存储方式,类似于C语言的数组。简单的说序列是一块用来存储多个值的连续内存空间,同一个序列的元素通常是相关的。

 

  Python中常用的序列结构有列表、元组、字典、字符串、集合等,字典和集合是无序的,其他三个都支持双向索引。一般0为第一个序列,但是python可以用负数做下标序列,最后一个下标为-1,之前的为-2,以此类推。

阅读网址:https://docs.python.org/3/tutorial/datastructures.html

 

  2.1列表

    列表的所有元素放在一堆方括号中相邻元素之间用逗号分开,元素扩充或删除时,列表自动扩充或缩减,但尽量向列表末尾进行增删操作。同一列表中元素类型可以不同,可以是基本类型,也可以是序列类型。

    2.1.1列表的创建和删除

      创建:a_list=[]空列表

         a_list=['a','b','zxlc']

         也可以用list()函数将元组、range对象、字符串或其他类型的对象转换成列表例如:

         a_list=list((3,5,7,9))  #将元组转换成列表

         list(range(1,10,2)           #将range对象转换成列表(range函数:第一个参数是起始数,第二个参数是终止数,第三个数是步长)

         list('hello world')     #将字符串转换成列表

         x=list()          #创建空列表

       删除:del a_list

 

    2.1.2列表元素添加

      1、append()方法,在列表末尾添加一个元素

          a_list.append(i)

      2、 ,创建一个新列表,在旧列表后加上这个新列表

        a_list=a_list [i]

      3、extend()方法可以将其他元素放在后面

      4、insert()方法可以按元素顺序插入元素

      5、用乘法来扩展列表对象,将列表与整数相乘,生成一个新序列,新序列是之前序列的重复,相当于另外创建了一个序列(id不同)

 

    2.1.3列表元素删除

      1、使用del命令删除列表中的指定位置上的元素。

        a_list=[3,5,7,9,11]

        del a_list[1]

        a_list

        [3,7,9,11]

      2、pop()方法删除并返回指定位置上的元素(默认为最后一个),如果指定的索引超出了范围,就抛出异常。

      3、remove()方法删除首次出现的指定元素,如果列表中不存在这个元素,则抛出异常。

***每次执行完插入和删除操作,元素的索引都会改变

    2.1.4列表元素查询和计数

      查询可以直接用下标

      index()函数可以查看指定元素的索引

      count()函数可以计数某元素出现的次数

    2.1.5判断元素是否在列表中

      用in

        3 in a_list

    2.1.6切片操作

      切片使用两个冒号分隔的三个数字来完成:第一个数字为切片开始位置(默认为0);第二个数字为切片截止(但不包含)位置(默认为列表长度),第三个数字为切片的步长(默认为1),当步长省略时,最后一个冒号也可以省略

      例如 aList=[3,4,5,6,7,9,11,13,15,17]

       >>>aList[::-1]

         [17,15,13,11,9,7,6,5,4,3]

       >>>aList[::2]

         [3 ,5,7,11,15]

用切片复制列表是一个中浅克隆,而直接列表等号赋值是深克隆。

    2.1.7列表排序

      利用sort()函数,返回排序后的原列表。

      默认为升序:aList.sort()

      改为降序:aList.sort(reverse=true)

 

      利用sorted()函数,返回排序后的新列表

本文由wns9778.com发布于计算机教程,转载请注明出处:【wns9778.com】数据结构-Python3.7&lt;三&gt;

关键词: wns9778.com

上一篇:wns9778.com:浅谈JS异步轮询和单线程机制

下一篇:没有了