小工具知识网

当前位置: 首页 > 行业知识 > Python基础学习笔记(六)——列表

行业知识

Python基础学习笔记(六)——列表

2026-10-26 22:20:17 来源:互联网转载

目录

  • 一、一维列表的介绍和创建
  • 二、序列的基本操作
    • 1. 索引的查询与返回
    • 2. 切片
    • 3. 序列加
    • 三、元素的增删改
      • 1. 添加元素
      • 2. 删除元素
      • 3. 更改元素
      • 四、排序
      • 五、列表生成式

        一、一维列表的介绍和创建

          列表(list),也称数组,是一种有序、可变、允许重复元素的组合数据结构,属于可变序列,由方括号[]内、用逗号分隔的一组元素组成。

        ()

          列表可存储多个元素以方便对一组数据整体操作。不同的列表的内存地址互不相同,即id独立。

          列表有两种创建方式:直接将目的列表赋予变量,称为赋值创建;使用list()函数将任意组合转化为列表,称为引用创建。

        ()

          下文的列表均指一维列表。

        # 空列表lst = []lst = list()# 赋值创建lst = [1, 2, 3]# 引用创建(字典转列表):转化前后元素不变lst = list({'1': 'a', '2': 'b', '3': 'c', })print(lst, type(lst), id(lst))
        [1, 2, 3]  1937556730752

          列表的元素可以是任意数据类型的对象的引用,也就是一维指针。所以列表实际上是一种二维指针,用于存储一维指针。

          在Python中,通常不采用这种描述,因为Python不支持指针的直接操作。但是,列表的索引可以模拟二级指针。

        二、序列的基本操作

          以下操作适用于所有序列,即列表、元组和字符串,下文仅以列表为例。

        1. 索引的查询与返回

          索引描述了序列中的元素的位置,是用于访问元素的操作方法,分为正数索引和负数索引。

          序列中的元素从左到右的正数索引依次为0, 1, 2, ... , n,从右到左的负数索引依次为-1, -2, ... , -n。

          可以通过查询索引获取对应元素的值。

        lst = [1, 2, 3]print(lst[0], lst[-3])
        1 1

          也可以使用index()函数,通过元素的值返回对应的正数索引。若列表存在相同的元素,只返回最小的正数索引;若列表不存在对应的元素,报错ValueError.

          index(arg1, arg2=0, arg3=len(list))可限定索引区间:默认步长为1,开始索引为0,结束索引为列表长度(元素个数),区间形式与range函数相似,即左闭右开。

          若arg3未传递,传递了负数,或者传递了小于arg2的值,则参数arg3无效,函数功能为:返回索引为arg2上的指定元素的正数索引。一般不会用到该功能。特别的,若arg2=arg3,一定会报错,因为索引区间为空。

        lst = ['1', '2', '3', '4', '1']# index(element):返回指定元素的索引print(lst.index('1'))# index(element, index):返回限定位置上的指定元素的索引print(lst.index('1', 4))# index(element, start, stop):返回限定位置区间上的指定元素的索引print(lst.index('1', 1, 5))
        044

        2. 切片

          切片是指获取序列中的子序列,是访问序列中的多个元素的一种方式,其结果是原序列片段的拷贝。

          list[start=0:stop=-1:step=1],就是将整数序列range(start,stop,step)作为从原序列所取元素的索引,获取并拷贝这些元素,然后返回一个具有新id的子序列。

          其参数默认值与range类似。特别的,若start或stop为负数索引,则先转化为正数索引,再遵循range对应。

        lst = [1, 2, 3, 4, 5, 6]print(lst[1:5:2], lst[1:-1:2])print(id(lst), id(lst[1:5:2]))# 第一个冒号不能省略,第二个可以省略print(lst[1:5], lst[1::2], lst[:5:2])print(lst[1:], lst[:5], lst[::2])
        [2, 4]  [2, 4]1383891593536 1383891563392[2, 3, 4, 5]  [2, 4, 6]  [1, 3, 5][2, 3, 4, 5, 6]  [1, 2, 3, 4, 5]  [1, 3, 5]

        3. 序列加

          同类型的序列之间可以进行序列加运算+,即:将后一个序列的元素依次添加到前一个序列里。

        lst = list([1, 2])print(lst + lst)
        [1, 2, 1, 2]

        三、元素的增删改

        1. 添加元素

        • append(element)函数:在列表末尾添加一个元素。
        • extend(iterable)函数:在列表末尾依次添加一个组合内的元素。
        • insert(index, element)函数:在指定索引插入一个元素,后续元素索引+1.

            上述的函数没有返回值,也就是说它们的操作是在原列表上进行的,但列表的id仍会改变。

            序列加赋值运算+=可以替代extend()函数,但列表没有被分配-=运算。

          lst = list([1, 2])# 不能将组合内的元素加入列表lst.append([3])print(lst)# 集合是无序组合,添加次序遵循特殊的哈希映射lst.extend({5, 4})print(lst)# 也可以简化为赋值运算lst += (7, 8)  # 元组,一种序列,属于组合类型print(lst)# 负数索引视为正数索引输入lst.insert(-7, '0')print(lst)
          [1, 2, [3]][1, 2, [3], 4, 5][1, 2, [3], 4, 5, 7, 8]['0', 1, 2, [3], 4, 5, 7, 8]

          2. 删除元素

          • remove(element)函数:删除一个指定元素,若存在重复元素,取最小正数索引。
          • pop(index=-1)函数:删除一个指定索引上的元素,参数默认值为-1.
          • clear()函数:清空列表中的所有元素。
          • del语句:删除一个指定索引上的元素,也可以删除指定切片范围内的元素,甚至删除列表本身。
            lst = list([1, 2, 3, 4, 5])lst.remove(5)print(lst)lst.pop(0)print(lst)lst.pop()print(lst)lst.clear()print(lst)lst = list([1, 2, 3, 4, 5])del lst[0]print(lst)del lst[1:]print(lst)del lstprint(lst)
            [1, 2, 3, 4][2, 3, 4][2, 3][][2, 3, 4, 5][2]NameError: name 'lst' is not defined.

            3. 更改元素

              列表元素的更改主要通过索引查询和切片替换,它们的功能与上述的添加和删除有所重叠。

              索引查询不仅能获取指定索引上的元素的值,也可以对它进行修改;切片替换可将切片内的元素依次替换为一个组合内的元素。当切片步长为1时,组合的元素数量不受限制;否则,切片的元素个数须等于组合的元素个数。

            lst = list([1, 2, 3, 4, 5])# 逐个修改lst[0] = 0print(lst)# 批量修改lst[1:3] = [10, 20, 30, 40]print(lst)# 批量删除lst[1:5] = []print(lst)# 跳跃替换lst[::2] = 'ab'print(lst)
            [0, 2, 3, 4, 5][0, 10, 20, 30, 40, 4, 5][0, 4, 5]['a', 4, 'b']

            四、排序

              sort(reverse=False)是一个无返回值函数,参数默认值为升序排列,可以对列表内的元素进行排序。对于基本数据类型的元素,数值类型可以互相排序,字符串不能与数值排序。

              sorted(reverse=False)与前者的区别在于,它可以对任意组合内的元素进行排序,并返回一个排序后的列表。

              对于值的大小相同,但类型不同的数值,遵循int

              字符串的比较将在后续篇章说明,排序算法则在进阶篇中展开。

            lst = [0, 1, 1.0, True, 2]# 升序排列lst.sort()print(lst)# 降序排列print(sorted(lst, reverse=True))
            [0, 1, 1.0, True, 2][2, 1, 1.0, True, 0]

            五、列表生成式

              生成式是for遍历的缩简语句,用于快速生成组合,格式为:[运算式 for 变量 in 可迭代对象],即:遍历可迭代对象,将其每个元素经运算后的结果加入所生成的组合中。

            print([i**2 for i in range(5)])
            [0, 1, 4, 9, 16]

上一篇:护士/医助从老家辞职了护士职业

下一篇:日服怎么挤服务器?