zoukankan      html  css  js  c++  java
  • Python数据结构基础内容

    1.列表:

    >>> a=[123,333,333,1,145.5]
    >>> print(a.count(333),a.count(1),a.count('x'))      #list.count(x)返回 x 在列表中出现的次数
    (2, 1, 0)
    >>> a.insert(2,-1)    #list.insert(i,x) 在指定位置 i 插入一个元素x
    >>> a.append(333)     #list.append(x) 把x添加到列表的结尾
    >>> a
    [123, 333, -1, 333, 1, 145.5, 333]
    >>> a.index(333)     #list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误
    1
    >>> a.remove(333)    #list.remove(x)删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误
    >>> a
    [123, -1, 333, 1, 145.5, 333]
    >>> a.reverse()     #list.reverse()倒排列表list的元素
    >>> a
    [333, 145.5, 1, 333, -1, 123]
    >>> a.sort()    #list.sort()对列表元素排序(具体怎样排序的不清楚,数字为从小到大)
    >>> a
    [-1, 1, 123, 145.5, 333, 333]
    
    #类似 insert, remove 或 sort 等修改列表的方法没有返回值
    View Code

    2.将列表当做堆栈使用:

    堆栈:先进后出

    列表方法使得列表可以作为一个堆栈来使用,用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来

    >>> stack=[3,4,5]
    >>> stack.append(6)
    >>> stack.append(7)
    >>> stack
    [3, 4, 5, 6, 7]
    >>> stack.pop()      #不指定位置默认删除最后一个
    7
    >>> stack.pop()
    6
    >>> stack
    [3, 4, 5]
    View Code

    3.将列表当做队列使用

    队列:先进先出

    首先了解Python常用内建模块:collections

      1.namedtuple函数:用它创建一个自定义的元组tuple对象,它具备元组tuple的不变性,又可以根据属性来引用,使用十分方便,注意d别写掉了哈哈  

    >>> from collections import namedtuple
    >>> Point=namedtuple('Point',['x','y'])  #表示一个点的二维坐标
    >>> p=Point(1,2)
    >>> p.x
    1
    >>> p.y
    2

    #类似的,用坐标和半径表示一个圆,也可以用namedtuple定义
    Circle=namedtuple('Circle',['x','y','r'])

    #总结语法:namedtuple('名称',[属性])

      2.deque(双端队列)

           目的:为了高效实现插入和删除操作的双向列表,适合用于队列和栈

      原因:使用列表存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为列表是线性存储,数据量大的时候,插入和删除效率很低。

      deque除了实现list的append()pop()外,还支持appendleft()popleft(),这样就可以非常高效地往头部添加或删除元素

    >>> from collections import deque
    >>> q=deque(['a','b','c'])
    >>> q.append('x')
    >>> q.appendleft('y')
    >>> q
    deque(['y', 'a', 'b', 'c', 'x'])
    >>> q.pop()
    'x'
    >>> q.popleft()
    'y'
    >>> q
    deque(['a', 'b', 'c'])
    
    #总结语法:定义队列q=deque(列表)
    #deque支持头部添加appendleft()和头部删除popleft(),遇到把列表当做队列就这样做才高效

    列表推导式:

    >>> vec=[2,4,6]
    >>> [3*x for x in vec]
    [6, 12, 18]
    >>> [[x,x**2] for x in vec]
    [[2, 4], [4, 16], [6, 36]]
    >>> [3*x for x in vec if x>3]
    [12, 18]
    >>> [3*x for x in vec if x<2]
    []
    >>> vec1=[2,4,6]
    >>> vec2=[4,3,-9]
    >>> [x*y for x in vec1 for y in vec2]
    [8, 6, -18, 16, 12, -36, 24, 18, -54]
    >>> [vec1[i]*vec2[i] for i in range(len(vec1))]
    [8, 12, -54]
    >>> [str(round(355/113,i)) for i in range(1,6)]    #round(x,i)返回浮点数x的四舍五入值,保留小数位数是i
    ['3.0', '3.0', '3.0', '3.0', '3.0']
    >>> [x.strip() for x in vec]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'int' object has no attribute 'strip'   #错误的是类型
    >>> vec3=['john','jack','tom']
    >>> [x.strip() for x in vec3]
    ['john', 'jack', 'tom']
    View Code
  • 相关阅读:
    VMware Workstation Pro 12 创建虚拟机(安装Ubuntu)
    老师的题目(开心一刻)
    政务私有云盘系统建设的工具 – Mobox私有云盘
    学校信息化分享-中小学怎样快速完成教学资源库的建设
    SpringBoot 2.x 文件上传出现 The field file exceeds its maximum permitted size of 1048576 bytes
    nginx错误集
    nginx做http强制跳转https,接口的POST请求变成GET
    swagger Base URL地址和下边的不一致
    CentOS7关闭防火墙
    nginx配置:静态访问txt文件
  • 原文地址:https://www.cnblogs.com/zhou0000/p/8533064.html
Copyright © 2011-2022 走看看