10. Python 列表

881 阅读8分钟

1. 列表

  • 列表创建

    • 语法: listName = [element 1, element 2, element n]

    • 其中,listName 表示列表的名称,可以是符合 Python 命名规则的标识符: "element1,element 2, element n" 表示列表中的元素,个数没有限制。并且只要是 Python 支持的数据类型就可以。

    num = [7, 14, 21, 28, 35, 42, 49, 56, 63]
    verse = ['自古逢秋悲寂寥', '我言秋日胜春朝', '晴空一鹤排云上', '便引诗情到碧霄']
    untitle = ['Python', 28, '人生苦短', '我用Python', ['爬虫', '自动化运维', '云计算']]
    python = ['优雅', '明确', '简单']
    
    • 说明:在使用列表时,虽然可以将不同类型的数据放入到同一个列表中,但是通常情况下,我们不这样做,而是在一个列表中只放入一种类型的数据,这样可以提高程序的可读性。

  • 创建空列表

    emptylist = []
    
  • 创建数值列表

    • 在 Python 中,数值列表很常用。例如,在考试系统中记录学生的成绩,或者在游戏中记录每个角色的位置、各个玩家的得分情况等都可应用数值列表。在 Python 中,可以使用 list() 函数直接将 range() 函数循环出来的结果转换为列表。

      • list() 函数的基本语法如下:list(data)

      • data 表示可以转换为列表的数据,其类型可以是 range 对象、字符串、元祖或者或者其他可迭代类型的数据。

      list(range(10, 20, 2)) # [10, 12, 14, 16, 18]
      
  • 删除列表

    • 对于已经创建的列表,不再使用时,可以使用 del 语句将其删除。语法格式如下:

    • del 语句在实际开发时,并不常用。因为 Python 自带的垃圾回收机制会自动销毁不用的列表。所以即使我们不手动将其删除,Python 也会自动将其回收。

    team = ['皇马', '罗马', '利物浦', '拜仁']
    del team
    
  • 访问列表元素

    • 在 Python 中,如果想将列表的内容输出也比较简单,可以直接使用 print() 函数即可。例如,创建一个名称为 untitle 的列表,并打印该列表,可以使用下面的代码:
    untitle = ['Python', 28, '人生苦短,我用Python', ['爬虫', '自动化运维', '云计算']]
    print(untitle) # ['Python', 28, '人生苦短,我用Python', ['爬虫', '自动化运维', '云计算']]
    
    • 也可以通过列表的索引获取指定元素。例如,要获取 untitle 列表中索引为 2 的元素。
    print(untitle[2]) # 人生苦短,我用Python
    
  • 遍历列表

    • 遍历列表中的所有元素是常用的一种操作,在遍历的过程中可以完成查询、处理等功能。在生活中,如果想去商场买一件衣服,就需要在商场中逛一遍,看是否有想要的衣服,逛商场的过程就相当于列表的遍历操作。在 Python 中遍历列表的方法有多种,下面介绍两种常用的方法。

      • 使用 for 循环实现
      team = ['火箭', '勇士', '开拓者', '爵士']
      for item in team:
          print(item) # 火箭 勇士 开拓者 爵士
      
      • 使用 for 循环和 enumerate() 函数实现

        • 使用 for 循环和 enumerate() 函数可以实现同时输出索引值和元素内容
        team = ['火箭', '勇士', '开拓者', '爵士']
        for index,item in enumerate(team):
            print(index, item) # 0 火箭
                               # 1 勇士
                               # 2 开拓者
                               # 3 爵士
        
  • 添加、修改和删除列表元素

    • 添加元素

      • append():列表对象的 append() 方法用于在列表末尾追加元素
      phone = ['摩托罗拉', '诺基亚', '三星', 'OPPO']
      phone.append('iPhone')
      print(phone) # ['摩托罗拉', '诺基亚', '三星', 'OPPO', 'iPhone']
      
      • extend():用于将一个列表中全部元素添加到另一个列表中
      oldPhone = ['三星', '苹果']
      newPhone = ['华为', '小米']
      oldPhone.extend(newPhone)
      print(oldPhone)  # ['三星', '苹果', '华为', '小米']
      
    • 修改元素

      • 修改列表中的元素只需要通过索引获取该元素,然后再为其重新复制即可。
      phone = ['三星', '小米', '苹果', '诺基亚']
      phone[-1] = '华为'
      print(phone) # ['三星', '小米', '苹果', '华为']
      
    • 删除元素

      • 删除元素主要有两种情况,一种是根据索引删除,另一种是根据元素值进行删除。

        • 根据索引删除
        verse = ['长亭外', '古道边', '芳草碧连天']
        del verse[-1]
        print(verse) # ['长亭外', '古道边']
        
        • 根据元素值删除

          • 如果想要删除一个不确定其位置的元素,可以根据元素值删除
          team = ['火箭', '公牛', '开拓者', '爵士']
          team.remove('公牛')
          print(team) # ['火箭','开拓者', '爵士']
          
          • 使用列表对象 remove() 方法删除元素时,如果指定元素不存在,将会报错。所有使用 remove() 方法删除元素前,最好判断该元素是否存在。列表对象的 count() 方法用于判断指定元素出现的次数。
          team = ['火箭', '公牛', '开拓者', '爵士']
          value = '公牛'
          if team.remove(value) > 0 :
              team.remove(value)
          print(team) # ['火箭', '开拓者', '爵士']
          
  • 对列表进行统计和计算

    • 获取指定元素出现的次数

      • 使用列表对象的 count() 方法可以获取指定元素在列表中的出现次数
      song = ['云在飞', '我在诛仙逍遥涧', '送你一匹马', '半壶纱', '云在飞', '遇见你', '等你等了那么久']
      num = song.count('云在飞')
      print(num) # 2
      
    • 获取指定元素首次出现的下标

      • 使用列表对象的 index() 方法可以获取指定元素在列表中首次出现的位置(即索引)
      song = ['云在飞', '我在诛仙逍遥涧', '送你一匹马', '半壶纱', '云在飞', '遇见你', '等你等了那么久']
      position = song.index('云在飞')
      print(position)
      
    • 统计数值列表的元素和

      • 在 Pytnon 中,提供了 sum() 函数用于统计数值列表中各元素的和

        • 语法格式如下:sum(iterable[,start])

          • iterable:表示要统计的列表

          • start:设定一开始统计的数值,可选,默认值为 0

      grade = [98, 99, 97, 100, 100]
      total = sum(grade, 100) 
      print(total) # 594
      
  • 对列表进行排序

    • 使用列表对象的 sort() 方法

      • 排序后缘列表的元素将发生改变 列表对象的 sort() 方法语法格式如下:listname.sort(key=None, reverse=False)

        • listname:表示要进行排序的列表

        • key:表示指定从每个元素中提取一个用于比较的健,接收一个比较返回值

        • reverse:可选参数,为 True 则降序排列。False 则升序排列,默认为升序排序

        char = ['cat', 'tom', 'Angela', 'pet']
        def length(item):
            return len(item) # 根据每一项的长度来降序排序
        char.sort(key=length, reverse=True) # ['Angela', 'cat', 'tom', 'pet']
        
    • 使用内置的 sorted() 函数实现

      • 使用该函数进行排序后,原列表的元素不变 sorted() 函数的语法格式如下:sorted(iterable, key=None, reverse=False)

        • iterable:表示要进行排序的列表名称

        • key:表示指定从每个元素中提取一个用于比较的健,接收一个比较返回值

        • reverse:可选参数,为 True 则降序排列。False 则升序排列,默认为升序排序

        char1 = ['cat', 'tom', 'Angela', 'pet']
        def length(item):
            return len(item) # 根据每一项的长度来降序排序
        char2 = sorted(char1, key=length, reverse=Ture)
        print(char2) # ['Angela', 'cat', 'tom', 'pet']
        
  • 列表推导式

    • 生成指定范围的数值列表,语法格式如下:list = [Expression for var in range]

      • list:表示生成的列表名称

      • Expression:表达式

      • var:循环变量

      • range:采用 range() 函数生成的 range 对象

      import random # 导入 random 标准库
      randomnumber = [random.randint(10, 100) for i in range(10)]
      print('生成的随机数为:', randomnumber) # [78, 84, 21, 60, 74, 50, 65, 15, 94, 90]
      
    • 根据列表生成指定需求的列表,语法格式如下:newList = [Expression for var in list]

      • newlist:表示新生成的列表名称

      • Expression:表达式,用于计算新列表的元素

      • var:变量,值为后面列表的每一个元素值

      • list:用于生成新列表的原列表

      • 例如:定义一个记录商品价格的列表,然后应用列表推导式生成一个将全部商品价格打五折的列表,具体代码如下:

      price = [1200, 5330, 2988, 6200, 1998, 8888]
      sale = [int(i * 0.5) for i in price]
      print('原价格:', price)
      print('打五折的价格:', sale)
      
    • 从列表中选择符合条件的元素组成新的列表,语法格式如下:newlist = [Expression for var in list if condition]

      • newlist:表示新生成的列表名称

      • Expression:表达式,用于计算新列表的元素

      • var:变量,值为后面列表的每个元素值

      • list:用于生成新列表的原列表

      • condition:条件表达式,用于指定筛选条件

      • 例如:定义一个记录商品价格的列表,然后应用列表推导式生成一个商品价格高于 5000 元的列表,具体代码如下:

      price = [1200, 5330, 2988, 6200, 1998, 8888]
      sale = [x for x in price if x > 5000]
      print('原列表:', price)
      print('价格高于5000的:', sale)