列表

作者: qjh_py | 来源:发表于2020-04-23 15:08 被阅读0次

    目录

    1. 序列(sequence)
    2. 列表(list)
    3. 列表的基本操作
    4. 切片
    5. 列表的内置方法
    6. 遍历列表
    7. 列表推导式( List comprehensions )

    1. 序列(sequence)

    1.1 基本概念

    • 序列:Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
    • 数据结构:计算机中数据存储的方式

    1.2 序列的分类

    • 可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
    • 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)

    2. 列表(list)

    列表:是Python中最常用的一种数据结构,它是一组用方括号括起来、逗号分隔的数据。列表的元素可以是任何类型的,个数是无限制的,但使用时一个列表中的元素类型是相同的。下面的列表有4个元素,元素类型分别是字符串、整数、浮点数和列表:

    list_1 = ['python’, 1, 3.14, ['x','2']]
    

    总结:

    • 列表是Python中的一个对象
      -标志是 [ ]
    • 列表的作用
      • 可以保存多个有序的数据
      • 用来存储对象的对象

    2.1 列表的创建

    list_2 = list() # 使用list()函数创建一个空列表
    list_3 = [] # 直接创建一个空列表
    list_4 = [2333, 'qjh', [521, 1314]] # 可嵌套创建列表
    

    2.2. 访问列表内的元素

    • 列表就像一个标号排队的队伍,从头到尾每个元素都有一个递增的号码,这个号码就是对应元素的“索引”(index)。与我们生活中不同的是,列表的第一元素的索引是0。
    • 要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的索引超过范围,会抛出异常。
    >>> list_4 = [2333, 'qjh', [521, 1314]]
    >>> list_4[0]
    2333
    # 列表可以嵌套列表,形成多维列表,形如矩阵。
    #其元素的引用方法是list[i][j][k].....
    >>> list_4[2][1] 
    1314
    >>> list_4[3]
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        list_4[3]
    IndexError: list index out of range
    
    • 其实还可以倒着索引,从-1开始:
    >>> list_4 = [2333, 'qjh', [521, 1314]]
    >>> list_4[-1]
    [521, 1314]
    
    • 正负索引的对应关系如下所示:
    列表: ['1', '2', '3', '4']
            |    |    |    | 
    正索引:  0    1    2    3    
    负索引: -4   -3   -2   -1
    

    2.3 列表元素的赋值

    • 和一般变量赋值类似,及其简单。
    >>> list_4 = [2333, 'qjh', [521, 1314]]
    >>> list_4[1] = 'lxy'
    >>> list_4
    [2333, 'lxy', [521, 1314]]
    

    3. 列表的基本操作

    4. 切片

    • 切片:对序列进行截取,选取序列中的某一段。
    • 语法: list[start:end:step]
    • 解释:以冒号分割索引,
      start--起点索引
      end--结束点索引
      step--步长,表示每隔多少距离取一个元素
      省略start表示以0开始
      省略end表示到列表的结尾
    • 注意:区间是左闭右开的!
    • 切片不会修改原有的列表,可以将结果保存到新的变量。
    • 其实不止列表有切片,字符串也可以。
    str1 = '<a href="http://www.fishc.com/dvd" target="_blank"> 鱼 C 资源打包 </a>'
    print(str1[16:29])
    print(str1[-49:-36])
    print(str1[16:-36])
    

    5. 列表的内置方法

    列表的内置方法
    • extend()、pop()代码示范
    # extend()、pop()代码示范
    a = [1,2,3,70]
    a.extend([[4,5,89]])
    print(a)
    a[0],a[1] = a[1],a[0]
    print(a)
    a.pop(1)
    print(a)
    a += [6]
    print(a)
    #[1, 2, 3, 70, [4, 5, 89]]
    #[2, 1, 3, 70, [4, 5, 89]]
    #[2, 3, 70, [4, 5, 89]]
    #[2, 3, 70, [4, 5, 89], 6]
    
    • 列表不同种类的复制
    # 列表不同种类的复制
    a = [0]
    b = a 
    c = a[:]
    d = a.copy()
    a += [1]
    b += [2]
    c += [3]
    d += [4]
    print(a,'\n',b,'\n',c,'\n',d)
    #[0, 1, 2] 
    # [0, 1, 2] 
    # [0, 3] 
    # [0, 4]
    

    6. 遍历列表

    6.1 for循环

    • 通过for循环来遍历列表
      语法
    for 变量 in 序列(遍历的规则):
        代码块
    
    • 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素

    6.2 range(start, stop[, step])函数

    参数说明

    • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
    • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
    • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

    7. 列表推导式( List comprehensions )

    列表推导式( List comprehensions )也叫列表解析,可以用来动态的创建列表
    语法如:[有关 A 的表达式 for A in B]

    >>>[ i*i for i in range(10) ] 
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    • 举一个栗子来说明列表推导式的好处。
      创建一个列表,格式为[(偶数,奇数),...],奇偶数的范围是0~10.
    # 列表推导式
    list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
    print(list1)
    # 一般写法
    list2 = [] 
    for x in range(10): 
        for y in range(10): 
            if x%2 == 0: 
                if y%2 != 0:
                    list2.append((x, y)) 
    print(list2)
    
    • 明显可以看出用列表推导式的方法代码更简洁!

    相关文章

      网友评论

          本文标题:列表

          本文链接:https://www.haomeiwen.com/subject/grzoihtx.html