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基础(四):切片和索引的更多相关文章

  1. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  2. Python基础(四) 基础拾遗、数据类型进阶

    一.基础拾遗 (一).变量作用域 外层变量,可以被内层变量直接调用:内层变量,无法被外层变量使用.这种说法在其它语言中适用,在python中除了栈以外,正常的变量作用域,只要执行声明并在内存中存在,该 ...

  3. Python基础3切片,字符串的方法

    切片:截取字符串某一段字符,并不改变原字符串.结构:[起始位置:终止位置:步长]  但不包括终止位置.所谓:顾头不顾尾 索引:序列中每个元素都是有编号的,都是从0开始编号的.使用负数索引时,Pytho ...

  4. 【笔记】Python基础四:迭代器和生成器

    一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ...

  5. Python基础3切片,字符串的方法,for 循环

    切片:截取序列(字符串,列表,元组等)中某一段字符,并不改变原数据和数据类型.结构:[起始位置:终止位置:步长]  但不包括终止位置.所谓:顾头不顾尾. 索引:序列中每个元素都是有编号的,都是从0开始 ...

  6. Python基础四

    1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集   2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身 ...

  7. python基础===字符串切片

    字符串的子串可以通过切片标志来表示:两个由冒号隔开的索引. >>> word 'HelpA' >>> word[4] 'A' >>> word[0 ...

  8. Python基础--字典:当索引不好用时

    当列表或是元组的索引不能达到我们的目的时,我们想到了还有一种序列,即字典. 创建 字典 由多个键以及相应的值构成的键-值对组成. 键唯一.值能够不唯一 phonebook = {'xidada':'1 ...

  9. python 基础(四) 函数

    函数 一.什么是函数? 函数是可以实现一些特定功能的 小方法 或者是小程序 优点: 提高 了代码的后期维护 增加了代码的重复使用率 减少了代码量 提高了代码可读性 二.函数的定义 使用 def关键+函 ...

  10. python基础四之列表

    列表详解 列表的增删改查! 增加 li = ['zxc', 'is', 'a'] # append 在列表结尾整体添加 修改列表,但是没有返回值 li.append('boy') print(li) ...

随机推荐

  1. js in depth: Object & Function & prototype & __proto__ & constructor & classes inherit

    js in depth: Object & Function & prototype & proto & constructor & classes inher ...

  2. NGK流动性挖矿 实现资金飞轮效应增长

    2020年被称为DeFi元年,DeFi无疑是目前整个加密货币市场中最亮眼的地方.得益于流动性挖矿的火热,DeFi 市场规模也得以飞速发展.可以说,流动性挖矿是DeFi爆发的最主要催化剂,同时它也在吸引 ...

  3. 【快速掌握】Redis 的五种数据类型

    不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...

  4. Nginx之Location匹配规则

    概述 经过多年发展,nginx凭借其优异的性能征服了互联网界,成为了各个互联网公司架构设计中不可获取的要素.Nginx是一门大学问,但是对于Web开发者来说,最重要的是需要能捋的清楚Nginx的请求路 ...

  5. 不可不知的 JVM 预热

    一.JVM 架构基础 JVM 进程启动时,ClassLoader 会将需要的所有类加载到内存,主要分为以下三步: Bootstrap Class: 核心类库,由 "Bootstrap Cla ...

  6. 如何在Pycharm中自动添加时间日期、作者等信息

    参考下面的内容 #_author_='Lucky';#date: ${DATE}

  7. ajax缺点

    ajax请求在SEO中效率低,SEO就是关键字搜索的匹配度. 比如在百度搜索Java,一般来说内容中出现Java的次数越多排名越靠前,当使用ajax时,它的异步刷新导致必须是页面刷新出来才去刷新数据, ...

  8. docker轻量级监控-sysdig

    sysdig Sysdig = system(系统)+dig(挖掘).Sysdig 是一个开源系统发掘工具,用于系统级别的勘察和排障,可以把它看作一系列Linux系统工具的组合,主要包括: strac ...

  9. 绿色城市之地下综合管廊3D可视化平台

    前言 现阶段,我国绿色城市建设发展正在热火朝天的进行,面对迅速城镇化建设导致的城市病,需要不断寻求足以丰富城市的资源,以此实现城市绿色化智能化发展,比如改造地下管廊.路灯等城市基础设施. 地下综合管廊 ...

  10. JavaScript实现动态添加员工

    html代码: <div id="empAdd"> <fieldset> <legend><strong>添加员工</stro ...