• Py列表(list)


    目录

    正向索引:

    反向索引:

    嵌套列表:

     修改列表中的值

    列表常用的方法

    实例

    练习:


    正向索引

    从0开始,依次递增。第一个元素的索引为0,第二个元素的索引为1,依此类推。

    列表的下标索引(正向)

    例如:

    1. fruits = ['apple', 'banana', 'cherry']
    2. print(fruits[0]) # 输出 'apple'
    3. print(fruits[1]) # 输出 'banana'
    '
    运行

    反向索引

    从-1开始,依次递减。最后一个元素的索引为-1,倒数第二个元素的索引为-2,以此类推。

    列表的下标索引(反向)

    例如:

    1. print(fruits[-1]) # 输出 'cherry'
    2. print(fruits[-2]) # 输出 'banana'

    嵌套列表:

    最底层的列表被标记为"元素0"、"元素1"、"元素0"和"元素1",这些元素分别属于两个不同的列表,即"列表(list)"0和"列表(list)"1。这两个列表又作为元素存在于最上层的"列表(list)"中。

    1. # 创建一个嵌套列表
    2. nested_list = [[1, 2], [3, 4]]
    3. # 访问嵌套列表中的元素
    4. print(nested_list[0][0]) # 输出: 1
    5. print(nested_list[0][1]) # 输出: 2
    6. print(nested_list[1][0]) # 输出: 3
    7. print(nested_list[1][1]) # 输出: 4
    '
    运行

    最底层的列表被标记为"元素0"、"元素1"、"元素0"和"元素1",这些元素分别属于两个不同的列表,即"列表(list)"0和"列表(list)"1。这两个列表又作为元素存在于最上层的"列表(list)"中。

    线性表(常见的线性表-----数组 栈 队列 链表) ---- 基于链表的数据结构实现的

    注意:python里面是没有数组的 数组的存储空间是连续的,它删除比较麻烦,因为内存是连续的,查询速度特别快(因为是连续的)-----------增删改的效率比较低

    栈:先进后出,后进先出

    队列:先进先出,后进后出

    链表(比较特殊的数据结构):(只有一个6byte的空间,但是要存8byte的数组,肯定是不够的,所以是有很多零碎的内存块,科学家就使用线将各种零碎的内存块连接起来)

    单向链表:节约内存

    没有头节点,只有尾节点

    双向链表

    一般有三个节点,第一个节点存上一个节点的地址(头指针),中间的存储数据,最后一个存下一个节点的内存(尾指针)

    Python中的列表就是基于双向链表实现的(查询慢,增删快)

    • 定义

      由弱数据类型语言决定,直接赋值给变量

      如: ls = [ 2,3,4,5 ]

      使用全局函数list对列表进行定义

      1. ls = list()
      2. ls = list([1,2,3,4,5,""])
      3. #容器中的每一个值,我们叫做元素
    • 如何访问元素

      使用下标来访问,注意下标是从0开始的(外国人喜欢从0开始计数) ls[0] 如果下标超过范围会报异常, 可以用下标来访问值,也可以修改值,另外下标也可以是负数

      求列表的长度?

      全局函数len(容器) -----------返回容器的长度

    • 如何遍历容器

      1. For循环
      2.     For i in ls:
      3.        Print(i)
      4. While循环
      5.     Index = 0
      6.     While index < len(ls):
      7.          Print(ls[index])
      8.          Index += 1

       修改列表中的值

      示例 1:修改列表中特定位置的值

      假设有一个列表,你想修改其中某个位置的元素。

      1. fruits = ['apple', 'banana', 'cherry']
      2. # 修改索引为1的元素,即把'banana'改为'orange'
      3. fruits[1] = 'orange'
      4. print(fruits) # 输出: ['apple', 'orange', 'cherry']
      '
      运行

      示例 2:遍历列表并修改所有值

      如果想要基于某种条件或运算修改列表中的每一个元素,可以遍历列表。

      1. numbers = [1, 2, 3, 4, 5]
      2. # 将列表中的每个元素都平方
      3. for i in range(len(numbers)):
      4. numbers[i] = numbers[i] ** 2
      5. print(numbers) # 输出: [1, 4, 9, 16, 25]
      '
      运行

      或者使用列表推导式更简洁地实现同样的功能:

      1. numbers = [1, 2, 3, 4, 5]
      2. squared_numbers = [x ** 2 for x in numbers]
      3. print(squared_numbers) # 输出: [1, 4, 9, 16, 25]
      '
      运行

      示例 3:修改嵌套列表中的值

      对于嵌套列表(列表中的列表),你需要通过两层索引来访问和修改内部列表的元素。

      1. nested_list = [[1, 2], [3, 4]]
      2. # 修改嵌套列表中第二个列表的第一个元素
      3. nested_list[1][0] = 'changed'
      4. print(nested_list) # 输出: [[1, 2], ['changed', 4]]
      '
      运行

    列表常用的方法

    方法名

    含义
    append()向列表尾部追加元素
    insert(index, object)向指定的位置追加元素
    sort()列表排序(只能排Int)字母按照ASCII值进行排序,类型不能混淆
    index()查找元素第一次在列表中出现的位置,如果没有这个元素则会
    reverse()将列表元素顺序翻转
    remove()通过元素来移除元素,如果元素不存在则抛出异常
    count()统计元素在列表中的个数
    clear()清除元素
    copy()浅拷贝对象(拷贝) 不等价于 = (引用传递),在堆内存中进行对象拷贝
    extend()合并列表
    pop()与append()相反,删除列表最后一个元素,并返回值这个元素,要删除指定位置的元素,用pop(i)方法,其中i是索引位置

    实例

    下面是一些关于如何使用 Python 列表方法的例子:

    append() 方法:向列表尾部追加元素。

    1. my_list = [1, 2, 3]
    2. my_list.append(4) # 添加元素 4 到列表末尾
    3. print(my_list) # 输出: [1, 2, 3, 4]
    '
    运行

    insert(index, object) 方法:向指定的位置追加元素。

    1. my_list = [1, 2, 3, 4, 5]
    2. my_list.insert(2, "new_element") # 在索引 2 的位置插入元素
    3. print(my_list) # 输出: [1, 2, 'new_element', 3, 4, 5]
    '
    运行

    sort() 方法:列表排序(只能排Int)字母按照ASCII值进行排序,类型不能混淆。

    1. my_list = [5, 1, 9, 3, 7]
    2. my_list.sort() # 对列表进行升序排列
    3. print(my_list) # 输出: [1, 3, 5, 7, 9]
    4. # 注意:对于非数字类型的元素,需要自定义比较函数或使用 sorted() 函数
    '
    运行

    index(element) 方法:查找元素第一次在列表中出现的位置,如果没有这个元素则抛出异常。

    1. my_list = [1, 2, 3, 4, 5]
    2. print(my_list.index(3)) # 输出: 2
    '
    运行

    reverse() 方法:将列表元素顺序翻转。

    1. my_list = [1, 2, 3, 4, 5]
    2. my_list.reverse()
    3. print(my_list) # 输出: [5, 4, 3, 2, 1]
    '
    运行

    remove(element) 方法:通过元素来移除元素,如果元素不存在则抛出异常。

    1. my_list = [1, 2, 3, 4, 5]
    2. my_list.remove(3) # 移除元素 3
    3. print(my_list) # 输出: [1, 2, 4, 5]
    '
    运行

    count(element) 方法:统计元素在列表中的个数。

    1. my_list = [1, 2, 3, 2, 1]
    2. print(my_list.count(2)) # 输出: 2
    '
    运行

    clear() 方法:清除元素。

    1. my_list = [1, 2, 3, 4, 5]
    2. my_list.clear()
    3. print(my_list) # 输出: []
    '
    运行

    copy() 方法:浅拷贝对象(拷贝)不等于 = (引用传递),在堆内存中进行对象拷贝。

    1. my_list = [1, 2, 3]
    2. copied_list = my_list.copy()
    3. print(copied_list) # 输出: [1, 2, 3]
    '
    运行

    extend(iterable) 方法:合并列表。

    1. my_list1 = [1, 2, 3]
    2. my_list2 = [4, 5, 6]
    3. my_list1.extend(my_list2)
    4. print(my_list1) # 输出: [1, 2, 3, 4, 5, 6]
    '
    运行

    pop([index]) 方法:与append()相反,删除列表最后一个元素,并返回值这个元素,要删除指定位置的元素,用pop(i)方法,其中i是索引位置。

    1. my_list = [1, 2, 3, 4, 5]
    2. print(my_list.pop()) # 输出: 5
    3. print(my_list) # 输出: [1, 2, 3, 4]
    4. my_list.pop(2) # 删除索引为 2 的元素
    5. print(my_list) # 输出: [1, 2, 4]
    '
    运行

    练习:

    使用Python列表实现学生年龄管理

    在本篇博客中,我们将探讨如何使用Python的列表功能来处理与学生年龄相关的一系列任务。以下是我们的目标:

    • 定义一个学生年龄列表。
    • 在列表末尾追加元素。
    • 向列表末尾追加另一个列表。
    • 获取列表的第一个和最后一个元素。
    • 查找指定元素在列表中的索引位置。
    • 对列表进行排序。

    初始化一个包含若干学生年龄的列表:

     
    
    student = [21, 25, 21, 23, 22, 20]'
    运行

    模拟新学生加入班级的情景,我们使用append()方法向列表尾部添加一名31岁的学生年龄:

    1. student.append(31)
    2. print(student) # 输出当前列表状态
    3. # 输出: [21, 25, 21, 23, 22, 20, 31]
    '
    运行

    如果有多个学生同时加入,可以利用extend()方法将一个包含多个人年龄的列表合并进来。这里,新增了三位学生,年龄分别为29、33、30岁:

    1. student_new = [29, 33, 30]
    2. student.extend(student_new)
    3. print(student) # 输出: [21, 25, 21, 23, 22, 20, 31, 29, 33, 30]

    在管理过程中,可能需要移除列表中的元素。这里,分别移除了最年轻(索引为0)和最新加入(索引为-1)的学生年龄,并打印移除的值:

    1. num = student.pop(0) # 输出: 21 (移除并打印元素)
    2. print(num)
    3. num = student.pop(-1) # 输出: 30 (移除并打印元素)
    4. print(num)

    为了查找特定学生年龄的位置,比如刚加入的31岁学生,我们使用index()方法获取其索引:

    print(student.index(31))  # 输出: 6 (显示31在列表中的索引位置)

    最后,为了便于分析或进一步处理,对整个年龄列表进行排序,保持数据有序:

    1. student.sort()
    2. print(student) # 输出: [20, 21, 21, 22, 23, 25, 29, 31, 33] (列表按升序排列)
  • 相关阅读:
    72. 编辑距离(动态规划)
    y96.第六章 微服务、服务网格及Envoy实战 -- xDS API与动态配置(七)
    使用springboot 配置一个websocket客户端
    蓝桥每日一题(day2 暴力)扫雷 easy
    Mybatis和MybatisPlus:数据库操作工具的对比
    PrimalScript通用脚本环境
    Qt实现单例模式:Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS
    分布式系统的 38 个知识点
    EtherCAT主站SOEM-- 0 SOEM下载编译及文件功能介绍
    服务器之间免密登录
  • 原文地址:https://blog.csdn.net/weixin_68398469/article/details/139277767