问题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. P1939 【模板】矩阵加速(数列)

    题目描述 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值. 输入输出格式 输入格式: 第一行一 ...

  2. Count the string HDU - 3336

    题意: 求一个字符串的每个前缀在这个字符串中出现次数的加和 解析: 默默的骂一句...傻xkmp..博主心里气愤... 拓展kmp就好多了... 因为拓展kmp每匹配一次   就相当于这些前缀出现了一 ...

  3. 【MVVM Dev】ComboBox嵌入CheckBox的显示问题

    一.前言 在ComboBox中嵌入若干个CheckBox时,当我们勾选一些CheckBox,ComboBox会显示相应的勾选项. 例如:CheckBox项有A,B,C   那么勾选这三项,ComboB ...

  4. Combining HTML5 Web Applications with OpenCV

    The Web Dev Zone is brought to you by Stormpath—offering a pre-built Identity API for developers. Ea ...

  5. BZOJ3451 Tyvj1953 Normal 【期望 + 点分治 + NTT】

    题目链接 BZOJ3451 题解 考虑每个点产生的贡献,即为该点在点分树中的深度期望值 由于期望的线性,最后的答案就是每个点贡献之和 对于点对\((i,j)\),考虑\(j\)成为\(i\)祖先的概率 ...

  6. Centos7单机部署ELK

    一. 简介 1.1 介绍 ELK是三个开源工具组成,简单解释如下: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风 ...

  7. 「Python」7个不一样的代码写法

    打印index 对于一个列表,或者说一个序列我们经常需要打印它的index,一般传统的做法或者说比较low的写法: 更优雅的写法是多用enumerate 两个序列的循环 我们会经常对两个序列进行计算或 ...

  8. Kruskal-Wallis test

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  9. PlantUML —— 应用于 Eclipse 的简单快速的 UML 编辑软件

    PlantUML —— 应用于 Eclipse 的简单快速的 UML 编辑软件 简介: 在应用系统软件开发过程中,如果软件由很多对象组成,它的结构仅仅凭借分析很难理清,同时为了有利于软件的开发及重用, ...

  10. OpenCV---超大图像二值化和空白区域过滤

    超大图像的二值化方法 1.可以采用分块方法, 2.先缩放处理就行二值化,然后还原大小 一:分块处理超大图像的二值化问题 def big_image_binary(image): print(image ...