问题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. tarjan求lca 模板

    #include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...

  2. 【容斥原理,莫比乌斯反演】用容斥替代莫比乌斯反演第二种形式解决gcd统计问题

    名字虽然很长.但是其实很简单,对于这一类问题基本上就是看你能不能把统计的公式搞出来(这时候需要一个会推公式的队友) 来源于某次cf的一道题,盼望上紫的我让潘学姐帮我代打一道题,她看了看跟我说了题解,用 ...

  3. 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)

    洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...

  4. Square Country

    原题链接:http://acm.timus.ru/problem.aspx?space=1&num=1073 分析:dp,dp[i]表示钱为i且恰好用完时能买的最少土地数,易知dp[i]=mi ...

  5. Codeforces 938.C Constructing Tests

    C. Constructing Tests time limit per test 1 second memory limit per test 256 megabytes input standar ...

  6. poj4052 Hrinity

    pdf题面:传送门 题目大意:给定一些单词和一个句子,问有多少个单词在句子中出现过,如果一个但单词包含另一个单词,并且两个单词都出现过,那么只算最外层的单词(包含另一个单词的单词). 分析:这道题如果 ...

  7. fmt:formatNumber use locale display negative currency in -$xxx.xx format in JSTL

    First, we want to know our own locale,how to display the locale in a JSTL? <c:out value="${p ...

  8. 目前最快速的多线程Kmeans算法,java实现

    目前最快速Kmeans算法,并由java实现!面对很大的K值表现依然很好. 代码地址: https://github.com/Jethu1/fastKmeans #1.这是一个由java实现的的,多线 ...

  9. Python进行数据分析(二)MovieLens 1M 数据集

    # -*- coding: utf-8 -*- """ Created on Thu Sep 21 12:24:37 2017 @author: Douzi " ...

  10. [Luogu 1967] NOIP2013 货车运输

    [Luogu 1967] NOIP2013 货车运输 一年多前令我十分头大的老题终于可以随手切掉了- 然而我这码风又变毒瘤了,我也很绝望. 看着一年前不带类不加空格不空行的清纯码风啊,时光也好像回去了 ...