功能:截取列表中的任何部分。

  切片适用于列表、元组、字符串、range对象等类型。。

  格式:[::]切片使用两个冒号分隔的3个数字来完成。

    第一个数字表示切片开始位置(默认为0)。

    第二个数字表示切片截止(但不包含)位置(默认为列表长度)。

    第三个数字表示切片的步长(默认为1),当步长省略是可省略最后一个冒号。

 1.切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表。  

  1. >>> alist=[1,2,3,4,5,6,7,8,9,0,]
  2. >>> alist[::]    #返回包含元素的新列表
  3. [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  4. >>> alist[::-1]   #逆序的所有元素
  5. [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  6. >>> alist[::2]    #偶数位置,隔一个取一个
  7. [1, 3, 5, 7, 9]
  8. >>> alist[1::2]    #奇数位置,隔一个取一个
  9. [2, 4, 6, 8, 0]
  10. >>> alist[3::]    #从下标3开始的所有元素
  11. [4, 5, 6, 7, 8, 9, 0]
  12. >>> alist[3:6]    #下标在[3,6]之间的所有元素
  13. [4, 5, 6]
  14. >>> alist[0:100:1]  #前100个元素,自动截断
  15. [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  16. >>> a[100:]      #下标100之后的所有元素,自动截断
  17. []
  18. >>> x[100]      #直接使用下标访问会发生越界
  19. Traceback (most recent call last):
  20. File "<pyshell#131>", line 1, in <module>
  21. x[100]
  22. IndexError: list index out of range

  2.可以使用切片来原地修改列表内容

  1. >>> alist
  2. [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
  3. >>> alist[len(alist):]=[9]    #在尾部追加元素
  4. >>> alist
  5. [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9]>>> alist[:3]=[3,2,1]      #替换前三个元素
  6. >>> alist
  7. [3, 2, 1, 4, 5, 6, 7, 8, 9, 0, 9]
  8. >>> alist[:3]=[]          #删除前三个元素
  9. >>> alist
  10. [4, 5, 6, 7, 8, 9, 0, 9]
  11. >>> alist=list(range(10))
  12. >>> alist
  13. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  14. >>> alist[::2]=[0]*5        #替换偶数位置上的元素
  15. >>> alist
  16. [0, 1, 0, 3, 0, 5, 0, 7, 0, 9]  
  17. >>> alilst[::2]=[0]*3        #切片不连续,两个元素个数必须一样多
  18. Traceback (most recent call last):
  19. File "<pyshell#153>", line 1, in <module>
  20. alilst[::2]=[0]*3
  21. NameError: name 'alilst' is not defined

  3.使用del与切片结合来删除列表元素

  1. >>> alist=[3,4,5,6,7,]
  2. >>> del alist[:3]      #删除前三个元素
  3. >>> alist
  4. [6, 7]
  5. >>> alist=[3,4,5,6,7]  
  6. >>> del alist[::2]    #删除偶数位置上的元素
  7. >>> alist
  8. [4, 6]

  4.切片返回的是列表元素的浅复制

  1. >>> alist=[3,5,7]
  2. >>> blist=alist
  3. >>> blist
  4. [3, 5, 7]
  5. >>> blist[1]= 8
  6. >>> alist
  7. [3, 8, 7]
  8. >>> alist==blist
  9. True
  10. >>> alist is blist
  11. True
  12. >>> id(alist)
  13. 2848177707136
  14. >>> id(blist)
  15. 2848177707136

  5.浅复制是把原列表中所有元素的引用都复制都信列表中

  原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的。

  原列表中包含列表之类的可变数据类型,由于浅复制是只是把子列表的引用复制到新列表中,修改任何一个都会影响另外一个。

  1. >>> alist=[1,2,3]
    >>> blist=alist[::]      #切片,浅复制
    >>> alist==blist        #两个列表的元素完全一样
    True
    >>> alist is blist        #但不是同一个对象
    False
    >>> id(alist)==id(blist)    #内存地址不一样
    False
    >>> blist[1]=8          #修改一个不会影响另一个
    >>> blist
    [1, 8, 3]
    >>> alist
    [1, 2, 3]

python序列(五)切片操作的更多相关文章

  1. Python序列的切片操作与技巧

    切片操作 对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]. start_index: 表示是第一个元素对象,正索引位置 ...

  2. Python中的切片操作

    python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...

  3. python学习之“切片操作从入门到精通”

    在python学习开发的过程中,我们总是不断的要对List(列表),Tuple(元组)有取值操作:假如我们有一个列表List1现在想取出1其中的前5个元素,改怎么操作呢? >>> L ...

  4. python列表的切片操作允许索引超出范围

    其余的不说,列表切片操作允许索引超出范围:

  5. Python列表的切片操作

    在Python列表中分片是一个很重要的操作,有以下几个注意的点: 切片时不包含最后一位,如下例子中,要取最后一位,从0开始算应该是到7就可以取,但是需要8才能取 2.      默认取值步长为1,即每 ...

  6. python 序列 转换 各种操作

    # 数据结构 字符串 列表 元组 数字序列# 10-19的整数# r1 = range(10,20)# print(r1)# print(type(r1))## # 19# print(r1[9])# ...

  7. Python中字符串切片操作

    一:取字符串中第几个字符 print "Hello"[0] 表示输出字符串中第一个字符print "Hello"[-1] 表示输出字符串中最后一个字符   二: ...

  8. Python字符串切片操作知识详解

    Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...

  9. Python——序列

    #!/usr/bin/python #coding:utf8 ''' Python——序列 字符串的操作 ''' s = 'abcdefg' print s print s[2] print s[-1 ...

  10. limit和offset、切片操作

    #encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,\ Da ...

随机推荐

  1. Python是什么?

    Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年. 像 Perl ...

  2. hibernate一对多,细节讲解

    1.一对多 1).首先创建两个实体类studeninfo.java跟studentxxb.java 1)studentinfo.java表如图: package model; import java. ...

  3. Kubernetes日志系统新贵Loki-Stack

    Loki简介 Grafana Loki是可以组成功能齐全的日志记录堆栈的一组组件. 与其他日志记录系统不同,Loki是基于仅索引有关日志的元数据的想法而构建的:标签(就像Prometheus标签一样) ...

  4. Django----短信验证接口

    1.注册荣联云账号 1.1注册账号 1.2 登录即可看到开发者账号信息 1.3 添加测试账号 2.使用容联云发送代码测试 '''1. 安装容联云sdk''' pip install ronglian_ ...

  5. c++11-17 模板核心知识(十三)—— 名称查找与ADL

    名称分类 名称查找 ordinary lookup ADL (Argument-Dependent Lookup) 官网的例子 ADL的缺点 在C++中,如果编译器遇到一个名称,它会寻找这个名称代表什 ...

  6. PP-OCR论文翻译

    译者注: 我有逛豆瓣社区的习惯,因此不经意间会看到一些外文翻译成中文书的评价."书是好书,翻译太臭"."中文版别看"."有能力尽量看原版". ...

  7. 基于spring@aspect注解的aop实现

    第一步:编写切面类 package com.dascom.hawk.app.web.tool; import org.aspectj.lang.JoinPoint; import org.aspect ...

  8. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  9. moviepy音视频剪辑:使用VideoFileClip、AudioFileClip和write_videofile、write_audiofile进行音视频的加载和输出

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 在本地进行音视频处理时,首先要从视频文件 ...

  10. PyQt(Python+Qt)学习随笔:QTreeWidget中获取指定位置项的itemAt方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTreeWidget的itemAt方法通过视口内的坐标点获取对应坐标位置的项,相关调用方法如下: ...