python基础(四):切片和索引
Python中的序列有元组、列表和字符串,因此我们都可以通过索引和切片的方式,来获取其中的元素。
索引
Python中的索引,对于正向索引,都是从0开始的。但是对于反向索引,确实从-1开始的。如图所示,我给大家做了一个图形演示。

下面我们定义了一个元组,我们既可以使用正向索引获取元组的第一个元素和最后一个元素。同样,我们也可以使用反向索引获取其中的第一个元素和最后一个元素。
>>> x = (1, 2, "梁", True, 1.2)
>>> x[0]
1
>>> x[4]
1.2
>>> x[-1]
1.2
>>> x[-5]
1
如果说,索引超出了元素长度的话,则会报错 IndexError: tuple index out of range,这是很多朋友学习Python时,会遇到的一个问题。
>>> x = (1, 2, "梁", True, 1.2)
>>> x[7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
切片
关于切片的使用,要记住一个语法:[start:stop:step],其中start代表起始索引;stop代表终止索引;step代表步长;
注意1:索引是左闭右开区间,比如说x[0:9:1],只能是取到索引等于0处的元素到索引等于8处的元素,而取不到索引等于9的这个元素;因为索引是从0开始的。
注意2:当不写start代表从起始处索引取数,当不写stop代表一直取数到最后位置,当不写step步长,代表使用默认步长1;
注意3:start、stop、step都可以是负数,具体什么含义,最好在下面的例子中好好体会;
下面我用一张图,带你辅助理解切片。

理解了切片的含义后,我们来做一些练习题吧。
a = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(a[:3])          # 0 1 2
print(a[3:6])         # 3 4 5
print(a[6:])          # 6 7 8 9
print(a[::])          # 0 1 2 3 4 5 6 7 8 9
print(a[:])           # 0 1 2 3 4 5 6 7 8 9
print(a[::3])         # 0 3 6 9
print(a[1::3])        # 1 4 7
print(a[2::3])        # 2 5 8
上面的案例,稍许有些简单,我们来看一点难得,你觉得好理解吗?如果能够很快写出来,都能理解的话,那么切片这一块儿,应该就没有问题了!
a = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
# 当start、stop、step为负数的时候,理解起来就稍微难一点;
print(a[::-1])        # 9 8 7 6 5 4 3 2 1 0
print(a[:-4:-1])      # 9 8 7
print(a[-4:-7:-1])    # 6 5 4
print(a[-7::-1])      # 3 2 1 0
python基础(四):切片和索引的更多相关文章
- Python 基础 四 面向对象杂谈
		Python 基础 四 面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ... 
- Python基础(四) 基础拾遗、数据类型进阶
		一.基础拾遗 (一).变量作用域 外层变量,可以被内层变量直接调用:内层变量,无法被外层变量使用.这种说法在其它语言中适用,在python中除了栈以外,正常的变量作用域,只要执行声明并在内存中存在,该 ... 
- Python基础3切片,字符串的方法
		切片:截取字符串某一段字符,并不改变原字符串.结构:[起始位置:终止位置:步长] 但不包括终止位置.所谓:顾头不顾尾 索引:序列中每个元素都是有编号的,都是从0开始编号的.使用负数索引时,Pytho ... 
- 【笔记】Python基础四:迭代器和生成器
		一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ... 
- Python基础3切片,字符串的方法,for 循环
		切片:截取序列(字符串,列表,元组等)中某一段字符,并不改变原数据和数据类型.结构:[起始位置:终止位置:步长] 但不包括终止位置.所谓:顾头不顾尾. 索引:序列中每个元素都是有编号的,都是从0开始 ... 
- Python基础四
		1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身 ... 
- python基础===字符串切片
		字符串的子串可以通过切片标志来表示:两个由冒号隔开的索引. >>> word 'HelpA' >>> word[4] 'A' >>> word[0 ... 
- Python基础--字典:当索引不好用时
		当列表或是元组的索引不能达到我们的目的时,我们想到了还有一种序列,即字典. 创建 字典 由多个键以及相应的值构成的键-值对组成. 键唯一.值能够不唯一 phonebook = {'xidada':'1 ... 
- python 基础(四) 函数
		函数 一.什么是函数? 函数是可以实现一些特定功能的 小方法 或者是小程序 优点: 提高 了代码的后期维护 增加了代码的重复使用率 减少了代码量 提高了代码可读性 二.函数的定义 使用 def关键+函 ... 
- python基础四之列表
		列表详解 列表的增删改查! 增加 li = ['zxc', 'is', 'a'] # append 在列表结尾整体添加 修改列表,但是没有返回值 li.append('boy') print(li) ... 
随机推荐
- css dark theme & js theme checker
			css dark theme & js theme checker live demo https://codepen.io/xgqfrms/pen/GRprYLm <!DOCTYPE ... 
- 如何导出android内部存储的文件(不用root)
			这段时间公司项目,涉及到数据缓存,由于需要缓冲的数据太多.太大,通过网络请求,再缓存到本地sqlite数据库,太费时间,消耗流量.所以准备先在本地保存一个标准版sqlite数据库(包含数据),打包到a ... 
- WEB 用视频替换GIF动画
			原文 download ffmpeg gif to video 转化后文件大小大大降低 $ ffmpeg -i my-animation.gif -b:v 0 -crf 25 -f mp4 -vcod ... 
- Vue和Element基础使用,综合案例学生列表实现
			知识点梳理 课堂讲义 1.Vue 快速入门 1.1.Vue的介绍 Vue是一套构建用户界面的渐进式前端框架. 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合. 通过尽可能简单的A ... 
- Tango with django 1.9 中文——2.准备工作
			在正式开始写代码之前,设置好开发环境是非常重要的.你要确保所有必须的组件都已安装好.本章将概述五个你需要了解的关键组件的设置和使用.清单如下: 使用命令行 Python Python包管理器pip和虚 ... 
- POJ-3436(网络流+最大流+输出路径)
			ACM Computer Factory POJ-3436 题目就是一个工厂n个加工机器,每个机器有一个效率w,q个材料入口,q个材料出口,每个口有三个数表示状态,1表示一定有入/出的材料,0表示没有 ... 
- 让人头疼的AI bug (随想)
			虽然概念上,人工智能和机器学习不等同.但是本文提及的AI,指的是基于机器学习的AI. 一个软件产品,出了错误叫bug,bug需要修.那一个机器学习的模型,准确率在那摆着呢,大伙心知肚明是有一定的犯 ... 
- 手工实现一个ThreadPoolExecutor
			以下代码的实现逻辑出自于公众号 码农翻身 <你管这破玩意叫线程池?> - PS:刘欣老师在我心中是软件技术行业的大刘. 线程池接口 public interface Executor { ... 
- Spring 中的事务
			前言: 之前总结了事务以及数据库中事务相关的知识点,Spring 对于事务做了相应的封装,便于业务开发中使用事务. 项目中使用Spring中的事务首先时基于Mysql数据库中InnoDB 引擎的,如果 ... 
- 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul
			本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ... 
