问题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. 【JavaScript】获取项目路径地址

    在jsp页面顶上面定义 <% String path = request.getContextPath(); String basePath = request.getScheme() + &q ...

  2. (转)REST无状态的理解

    转至http://lelglin.iteye.com/blog/1852092 Representational State Transfer的缩写.我对这个词组的翻译是"表现层状态转化&q ...

  3. Golang基础(一)

    1. 变量声明与赋值 // var.go package main import "fmt" var a string var b bool var c string = &quo ...

  4. 【转】Castle.ActiveRecord的嵌套事务处理

    嵌套的情况下,怎么处理Castle.ActiveRecord的事务? 今天试了一下,原来还是很简单的,只需要使用Castle.ActiveRecord.TransactionMode.Inherits ...

  5. 【CF331E】Biologist(网络流,最小割)

    [CF331E]Biologist(网络流,最小割) 题面 洛谷 翻译: 有一个长度为\(n\)的\(01\)串,将第\(i\)个位置变为另外一个数字的代价是\(v_i\). 有\(m\)个要求 每个 ...

  6. [USACO4.1]麦香牛块Beef McNuggets 题解报告

    题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装".& ...

  7. spark(三)spark sql

    一.DataFrame 1.DataFrame是组织成命名列的数据的分布式集合,类似于关系型数据库的一张表,如果没有列名就等于RDD,如果有列名,就是DataFrames DataFrames可以从各 ...

  8. 【bzoj4810】【ynoi2018】由乃的玉米田

    4810: [Ynoi2017]由乃的玉米田 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 1090  Solved: 524[Submit][Sta ...

  9. 【bzoj3678】wangxz与OJ

    Portal -- > bzoj 3678 Solution 这题==真实智力康复qwq 然而众多神犇都说是10min写完的题我..可能写了近1h吧==深深感受到自己的弱小qwq (丢上来是因为 ...

  10. pandans导出Excel并将数据保存到不同的Sheet表中

    数据存在mongodb中,按照类别导出到Excel文件,问题是想把同一类的数据放到一个sheet表中,最后只导出到一个excel文件中# coding=utf-8import pandas as pd ...