问题1. 超过列表成员个数的索引访问列表会出现IndexError错误,但是如果用切片去访问就不会报错,而是返回一个空列表。同样元组也是。

>>> a=[1,2,3,4]
>>> a[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> a[10:]
[]
>>> a[10:11]
[]
>>> a=(1,2,3)
>>> a[1]
2
>>> a[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> a[10:]
()
>>> a[10:20]
()
>>>

切片操作说明:a[1:3:2] 表示获取索引从1到2的元素(不包括索引为3的元素),并且每两个元素只保留一个。

>>> a=[1,2,3,4,5,6,7,8,9]
>>> a[0:10:3]
[1, 4, 7]
>>> a[1:3:2]
[2]
>>> a[::-1] #实现列表反转
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>>

通过切片获取元素,可以先想象通过给对象中每个元素作标记,
标记1:  0, 1, 2, 3, 4, 5, 6, 7
      a=[1, 2, 3, 4, 5, 6, 7, 8]
标记2: -8,-7, -6,-5, -4,-3,-2,-1

标记之后有3种获取方法,原则只要在两个标记位之间有元素存在就可以获取到,否则返回空列表。
第一种:通过标记1顺序获取:

>>> a=[1,  2,  3, 4, 5, 6, 7, 8]
>>> a[:]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[0:]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[:8]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[0:8]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[2:4]
[3, 4]
>>>

第二种:通过标记2顺序获取

>>> a=[1,  2,  3, 4, 5, 6, 7, 8]
>>> a[-8:]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[-8:-1]
[1, 2, 3, 4, 5, 6, 7] #注意a[-8:-1],其中-1索引位置元素是获取不到的。
>>> a[:-1]
[1, 2, 3, 4, 5, 6, 7] #注意a[-8:-1],其中-1索引位置元素是获取不到的。
>>> a[-6:-2]
[3, 4, 5, 6]

第三种:通过混合标记1和2顺序获取:

>>> a=[1,  2,  3, 4, 5, 6, 7, 8]
>>> a[-8:0]
[]
>>> a[-8:1]
[1]
>>> a[0:-1]
[1, 2, 3, 4, 5, 6, 7]
>>> a[8:-1]
[]
>>> a[7:-1]
[]
>>> a[6:-1]
[7]

FAQ1: 列表索引和切片问题的更多相关文章

  1. 列表(索引切片 增删改查 嵌套) range 元组的初识

    li = ["alex", "WuSir", "ritian", "barry", "wenzhou" ...

  2. python列表的索引与切片

    <1>.python的列表 索引方式: 例如,list1 = ['张三','男','33','江苏','硕士','已婚',['身高178','体重72']] 1.正向单索引 print(l ...

  3. python3.7[列表] 索引切片

    python3.7[列表] 索引  切片 排序     #### 列表.sort 永久排序   sorted(列表) 临时排序   ### >>> print(sorted(a))[ ...

  4. numpy之索引和切片

    索引和切片 一维数组 一维数组很简单,基本和列表一致. 它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改). 这也意味着,如果不想更改原始数组,我们需要进行显式的复制 ...

  5. Numpy系列(四)- 索引和切片

    Python 中原生的数组就支持使用方括号([])进行索引和切片操作,Numpy 自然不会放过这个强大的特性.  单个元素索引 1-D数组的单元素索引是人们期望的.它的工作原理与其他标准Python序 ...

  6. 数据类型&字符串得索引及切片

    一:数据类型 1):int     1,2,3用于计算 2):bool    ture  false  用于判断,也可做为if的条件 3):str     用引号引起来的都是str 存储少量数据,进行 ...

  7. [Python列表]-索引

    Python 列表(List) 前言 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内 ...

  8. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  9. 编码,基本数据类型,str索引和切片,for循环

    1. 编码 1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$% 128个码位 2**7 在此基础上加了一位 2**8 8位 ...

随机推荐

  1. CIR,CBS,EBS,PIR,PBS 名词解释 令牌桶应用

    为了达到上述目的,我们需要对进入网络的流量进行监督,实现CAR(Committed Access Rate). CAR:将进入网络的用户流量的速率限制在约定的范围之内,从而避免引起网络拥塞. CIR( ...

  2. Bond UVA - 11354(并查集按秩合并)

    题意: 给你一张无向图,然后有若干组询问,让你输出a->b的最小瓶颈路. 解析: 应该都想过用prime的次小生成树做..但二维数组开不了那么大..所以只能用kruskal了.... #incl ...

  3. 3.7 TCP拥塞控制

    3.7 TCP拥塞控制 在3.5.5流量控制中有,接收方通过维护一个rwnd来控制流量,本节中考虑三个问题: 第一,  一个TCP发送方如何限制它向其他连接发送流量的速率. 第二,  一个TCP发送方 ...

  4. Spring Boot系列教程四:配置文件详解properties

    一.配置随机数,使用随机数 在application.properties文件添加配置信息 #32位随机数 woniu.secret=${random.value} #随机整数 woniu.numbe ...

  5. 【JQuery】数据

    一.前言        接着前一章的内容,继续本章的学习 二.内容 queue 显示或操作在匹配元素上执行的函数队列 .queue(queueName) 操作在匹配元素上执行的函数队列 .queue( ...

  6. BZOJ2595 [Wc2008]游览计划 【状压dp + 最短路】

    题目链接 BZOJ2595 题解 著名的斯坦纳树问题 设\(f[i][j][s]\)表示点\((i,j)\)与景点联通状况为\(s\)的最小志愿者数 设\(val[i][j]\)为\((i,j)\)需 ...

  7. 简化版SMO算法标注

    ''' 随机选择随机数,不等于J ''' def selectJrand(i,m): j=i #we want to select any J not equal to i while (j==i): ...

  8. Qt ------ 断开某对信号与槽的connect

    QMetaObject::Connection dis; dis = connect(this,&TcpSocket::readyRead,this,&TcpSocket::readD ...

  9. Nginx多个配置文件共用location配置

    一.应用情况 很多时候我们在一台服务器上部署了不止 一个项目,我们通过Nginx来代理,为了方便管理往往会将各个项目的配置分开写到不同的配置文件中,如: 在nginx.conf 文件中加上  incl ...

  10. python 获取外网地址

    def get_ip(): try: url = "http://cn.bing.com/search?q=ip&go=%E6%8F%90%E4%BA%A4&qs=n& ...