zoukankan      html  css  js  c++  java
  • 序列--列表

    序列是一种数据存储方式,用来存储一系列的数据。

    序列中存储的是对象的地址,而不是对象的值。python中常用的序列结构有:字符串、列表、元组、字典、集合

    例: 定义一个序列 a =[10,20,30,40],在内存中的存储方式

    列表

      用于存储任意数目,任意类型的数据集合

      列表中元素可以各不相同,可以是任意类型

      如 :a=[12,"abc",True]

    列表对象的常用方法汇总

      

     Python中的列表大小可变,根据需要随时增加或缩小

    列表的创建

      基本语法[ ]创建

    >>> a = [10,20,"abc","hahaha"]
    >>> a = [] #创建一个空的列表对象

      list()创建

    >>> a = list()
    >>> a = list(range(10))
    >>> a
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> a = list("python")
    >>> a
    ['p', 'y', 't', 'h', 'o', 'n']

      range ()创建整数列表

      range([start,] end [,step])

      start:可选,默认为0

      end:必选,表示结尾数字

      step:可选,表示步长,默认为1

     a = [x*2 for x in range(100) if x%9 ==0]
    >>> a
    [0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

    列表元素的增加和删除

      append()方法

      原地修改列表对象是真正的列表尾部添加新的元素,速度最快,推荐使用

    >>> a = [20,40]
    >>> a.append(50)
    >>> a
    [20, 40, 50]

      +运算符操作

      创建新的列表对象;将原列表元素依次复制到新列表对象中。会涉及大量的复制操作,不建议使用

    >>> a = [20,40]
    >>> id(a)
    2283134467328
    >>> a = a+ [50]
    >>> id(a)
    2283134467584

      extend()方法

      将所有元素添加到本列表的尾部,属于原地操作,不创建新的对象

    >>> a = [20,40]
    >>> id(a)
    2283134467328
    >>> a.extend([50,60])
    >>> id(a)
    2283134467328

      insert()插入元素

      可以将元素插入到列表对象的任意指定位置。会让插入位置后面的所有元素进行移动,影响处理速度。设计大量元素时,尽量避免使用。类似发生这种移动的函数有remove()  pop()  del()  

    >>> a = [10,20,30]
    >>> a.insert(2,100)
    >>> a
    [10, 20, 100, 30]

      乘法扩展

    >>> a = ["Python",12,True]
    >>> b = a *3
    >>> b
    ['Python', 12, True, 'Python', 12, True, 'Python', 12, True]

    列表元素的删除

      del删除

        删除列表指定位置的元素(本质:列表的拷贝)

    >>> a = [10,20,30]
    >>> del a[1]
    >>> a
    [10, 30]

      pop()方法

        pop()删除并返回指定元素位置,如果未指定位置则默认操作列表最后一个元素

    >>> a = [10,20,30,40,50,60]
    >>> a.pop()
    60
    >>> a
    [10, 20, 30, 40, 50]
    >>> a.pop(2)
    30
    >>> a
    [10, 20, 40, 50]

      remove()方法

      删除首次出现的指定元素,若不存在该元素则抛出异常

    >>> a = [10,20,30,40,50,20,30,20,30,40]
    >>> a.remove(20)
    >>> a
    [10, 30, 40, 50, 20, 30, 20, 30, 40]
    >>> a.remove(100)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
    >>>

    列表元素的访问和计数

      通过索引直接访问元素

    >>> a = [10,20,30,40,50,20,30,20,30,40]
    >>> a[2]
    30
    >>> a[10]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range

      index()获得指定元素在列表中首次出现的索引

    >>> a = [10,20,30,40,50,20,30,20,30,40]
    >>> a.index(20)
    1
    >>> a.index(20,3)
    5

      count()获得指定元素在列表中出现的次数

    >>> a = [10,20,30,40,50,20,30,20,30,40]
    >>> a.count(20)
    3

      len()返回列表的长度

    >>> a=[10,20,30]
    >>> len(a)
    3

    成员资格的判断

    判断列表中是否存在指定的元素,我们可以使用count()方法,返回0则表示不存在,返回大于0则表示存在。但是,一般我们会使用更加简洁的关键字 in 来判断,直接返回True 或 False

    >>> a = [10,20,30,40,50,20,30,20,30,40]
    >>> 20 in a
    True
    >>> 100 not in a
    True

    切片操作slice

    切片slice操作可以让我们快速提取子列表或修改。标准格式:

      [起始偏移量start:终止偏移量end[:步长step]]

      典型操作

      

       其它操作(三个量为负数)的情况

      

     列表的遍历

    >>> a = [10,20,30,40,50,20,30,20,30,40]
    >>> for x in a :
    ...     print(x)
    ...
    10
    20
    30
    40
    50
    20
    30
    20
    30
    40
    View Code

    列表排序

    修改原列表,不新建新的列表的排序

    >>> a = [2,1,3,4]
    >>> a.sort()
    >>> a
    [1, 2, 3, 4]
    >>> a = [2,1,3,4]
    >>> id(a)
    2052279436736
    >>> a.sort()
    >>> a
    [1, 2, 3, 4]
    >>> id(a)
    2052279436736
    >>> a.sort(reverse=True)
    >>> a
    [4, 3, 2, 1]
    >>> import random
    >>> random.shuffle(a)
    >>> a
    [2, 4, 1, 3]
    >>> id(a)
    2052279436736

    建新列表的排序

    >>> a = [2,1,4,3]
    >>> a = sorted(a)
    >>> a = [2,1,4,3]
    >>> id(a)
    2052279436544
    >>> a = sorted(a)
    >>> a
    [1, 2, 3, 4]
    >>> id(a)
    2052279436736
    >>> a = sorted(a,reverse=True)
    >>> a
    [4, 3, 2, 1]
    >>> id(a)
    2052279436544

    reversed()返回迭代器

    内置函数也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象

    >>> a = [2,1,4,3]
    >>> c = reversed(a)
    >>> c
    <list_reverseiterator object at 0x000001DDD5621A30>
    >>> list(c)
    [3, 4, 1, 2]
    >>> list(c)
    []

    其它方法

    >>> a = [2,1,4,3]
    >>> max(a)
    4
    >>> min(a)
    1
    >>> sum(a)
    10

    多维列表

    二维列表

     源码:

      a = [

          ["高小一",18,30000,"北京"],

          ["高小二",19,20000,"上海"],

          ["高小五",20,10000,"深圳"]

        ]

  • 相关阅读:
    c 语言 运算符 优先级
    回文字符串个数
    最小操作数
    将一个二叉树转化为双向链表,不开辟新空间
    两个整数集合的交集 ———— 腾讯2014软件开发笔试题目
    python download
    Spring5.2.X源代码编译-问题-Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
    Spring5.2.X源代码编译-问题-找不到CoroutinesUtils
    Spring5.2.X源代码编译
    入行四年的思考
  • 原文地址:https://www.cnblogs.com/shengtudai/p/13568992.html
Copyright © 2011-2022 走看看