• Python 列表切片详解


    一、列表切片

         切指–将某些东西切成小块。列表切片是从原始列表中提取列表的一部分的过程。在列表切片中,我们将根据所需内容(如,从何处开始,结束以及增量进行切片)剪切列表。

         Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。

     存储对象[start : end : step] 

       参数:

    start : 起始索引,从0开始,-1表示结束

    end:结束索引,不包含

    step:步长;步长为正时,从左向右取值。步长为负时,反向取值

     

     二、列表切片使用

      (1)根据位置信息提取列表中的元素

    1. ll = [5, 17, 13, 14, 8, 19, 3, 7, 9, 12]
    2. print(ll)
    3. #显示从中间到尾部的数
    4. ss=int(len(ll)/2)
    5. print(ll[ss:])
    6. #最后一个
    7. print(ll[-1])
    8. #最后2个
    9. print(ll[-2:])
    10. #取3-8数
    11. print(ll[2:8])
    12. #取1-10中奇数 13579
    13. print(ll[::2])
    14. #取1-10中偶数 246810
    15. print(ll[1::2])
    16. '''切片健壮性的体现'''
    17. # 使用切片操作就不会产生该问题,会自动截断或者返回空列表。
    18. print(ll[0:20:3])
    19. #就是说,不会产生下标越界问题
    20. print(ll[21:])

     

      (2) 使用切片逆序列表- 反转列表 (Reverse a List)

    1. # 通过省略开始索引和停止索引并将步骤指定为 - 1 来反转列表
    2. ll = [5, 17, 13, 14, 8, 19, 3, 7, 9, 12]
    3. print(ll)
    4. print(ll[::-1])

     

     (3)修改多个列表元素值-可以使用切片赋值一次修改多个列表元素

    1. ll = [5, 17, 13, 14, 8, 19, 3, 7, 9, 12]
    2. print(ll)
    3. #修改多个列表项
    4. ll[1:3]=['pop','up']
    5. print(ll)
    6. #替换多个元件以代替单个元件
    7. ll[-1:]=[True,False]
    8. print(ll)

      

    (4)插入多个列表元素 -在列表中插入项目,而无需替换任何内容

    1. ll = [5, 17, 13, 14, 8, 19, 3, 7, 9, 12]
    2. print(ll)
    3. # 在第一个位置插入多个列表项
    4. ll[:0]=['a','b']
    5. print(ll)
    6. # 通过指定切片的开始索引和停止索引将元素插入到列表的中间。
    7. mid=int(len(ll)/2)
    8. ll[mid:mid]=['ok','no']
    9. print(ll)

     

     (5)删除多个列表元素

    1. # 将适当的切片赋值给空列表来删除列表中间的多个元素。
    2. ll = [5, 17, 13, 14, 8, 19, 3, 7, 9, 12]
    3. print(ll)
    4. # 删除多个列表项
    5. ll[5:]=[]
    6. print(ll)
    7. # 也可以将del语句用于切片。
    8. del ll[2:4]
    9. print(ll)

     

    (6)克隆或复制列表

    1. # 可以使用切片运算符复制列表(也称为浅拷贝)。
    2. ll = [5, 17, 13, 14, 8, 19, 3, 7, 9, 12]
    3. print(ll)
    4. # 第一种方法:
    5. ll2=ll[:]
    6. print(ll2)
    7. print(ll2 is ll)
    8. # 第二种方法:
    9. ll2=list(ll)
    10. print(ll2)
    11. # 第三种方法:
    12. import copy
    13. # 浅拷贝
    14. nll2 = copy.copy(ll)
    15. print(nll2 ,nll2 is ll)
    16. # # 深拷贝
    17. nll3 = copy.deepcopy(ll)
    18. print(nll3 ,nll3 is ll)

     

     

     

  • 相关阅读:
    服务中找不mysql 错误 error 2003 ERROR 2003 (HY000):
    企业IT运维开发一体化解决方案
    Ubuntu20.04安装和编译运行lidar_align来联合标定lidar与imu的外参
    UE5 Python脚本自动化Sequence Key帧
    【C++】类与对象 第二篇(构造函数,析构函数,拷贝构造,赋值重载)
    分类预测 | Matlab实现BES-ELM秃鹰搜索算法优化极限学习机分类预测
    RabbitMQ 消息应答与发布
    昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现
    【统计学习方法】学习笔记——逻辑斯谛回归和最大熵模型
    DataX同步数据到StarRocks问题记录
  • 原文地址:https://blog.csdn.net/hlx20080808/article/details/127610664