Python数据类型-序列sequence
作者:是梦吧,是你吧! 发布时间:2022-06-07 11:03:56
1 概述
在前面,我们已经对Python学习做了系统的知识梳理(Python思维导图),我们接下来把知识点分节进行细讲。这一节,我们讲解序列。
在介绍 Python 的常用数据类型之前,我们先看看 Python 最基本的数据结构 -——序列(sequence
)。序列的一个特点就是根据索引(index,即元素的位置)来获取序列中的元素,第一个索引是 0,第二 个索引是 1,以此类推。
所有序列类型都可以进行某些通用的操作,比如:
索引( indexing )
分片( sliceing )
迭代( iteration )
加( adding )
乘( multiplying )
除了上面这些,我们还可以检查某个元素是否属于序列的成员,计算序列的长度等等。
重点讲索引和切片。
2 基本操作
2.1 索引
序列中的元素可以通过索引获取,索引从 0 开始。看看下面的例子:
>>> nums = [1, 2, 3, 4, 5] # 列表
>>> nums[0]
1
>>> nums[1]
2
>>> nums[-1] # 索引 -1 表示最后一个元素
5
>>> s = 'abcdef' # 字符串
>>> s[0]
'a'
>>> s[1]
'b'
>>>
>>> a = (1, 2, 3) # 元组
>>> a[0]
1
>>> a[1]
2
注意到 : -1 则代表序列的最后一个元素, -2 代表倒数第二个元素,以此类推。
2.2 切片
索引用于获取序列中的单个元素,而分片则用于获取序列的部分元素。分片操作需要提供两个索引作为 边界,中间用冒号相隔,比如:
>>> numbers = [1, 2, 3, 4, 5, 6]
>>> numbers[0:2] # 列表分片
[1, 2]
>>> numbers[2:5]
[3, 4, 5]
>>> s = 'hello, world' # 字符串分片
>>> s[0:5]
'hello'
>>> a = (2, 4, 6, 8, 10) # 元组分片
>>> a[2:4]
(6, 8)
这里需要特别注意的是,分片有两个索引,第 1 个索引的元素是包含在内的,而第 2 个元素的索引 则不包含在内,也就是说,numbers[2:5] 获取的是 numbers[2], numbers[3], numbers[4],没有包括 numbers[5] 。
下面列举使用分片的一些技巧:
(1)访问最后几个元素
(2)使用步长
访问最后几个元素 :
假设需要访问序列的最后 3 个元素,我们当然可以像下面这样做:
>>> numbers = [1, 2, 3, 4, 5, 6]
>>> numbers[3:6]
[4, 5, 6]
有没有更简洁的方法呢?想到可以使用负数形式的索引,你可能会尝试这样做:
>>> numbers = [1, 2, 3, 4, 5, 6]
>>> numbers[-3:-1] # 实际取出的是 numbers[-3], numbers[-2]
[4, 5]
>>> numbers[-3:0] # 左边索引的元素比右边索引出现得晚,返回空序列
[]
上面的两种使用方式并不能正确获取序列的最后 3 个元素, Python 提供了一个捷径 :
(也就是说,如果希望分片包含最后一个元素,可将第 2 个索引置为空)
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]
>>> numbers[-3:]
[6, 7, 8]
>>> numbers[5:]
[6, 7, 8]
如果要复制整个序列,可以将两个索引都置为空:
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]
>>> nums = numbers[:]
>>> nums
[1, 2, 3, 4, 5, 6, 7, 8]
使用步长 :
使用分片的时候,步长默认是 1 ,即逐个访问,我们也可以自定义步长,比如:
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]
>>> numbers[0:4]
[1, 2, 3, 4]
>>> numbers[0:4:1] # 步长为 1,不写也可以,默认为 1
[1, 2, 3, 4]
>>> numbers[0:4:2] # 步长为 2,取出 numbers[0], numbers[2]
[1, 3]
>>> numbers[::3] # 等价于 numbers[0:8:3],取出索引为 0, 3, 6 的元素
[1, 4, 7]
另外,步长也可以是负数,表示从右到左取元素:
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8]
>>> numbers[0:4:-1]
[]
>>> numbers[4:0:-1] # 取出索引为 4, 3, 2, 1 的元素
[5, 4, 3, 2]
>>> numbers[4:0:-2] # 取出索引为 4, 2 的元素
[5, 3]
>>> numbers[::-1] # 从右到左取出所有元素
[8, 7, 6, 5, 4, 3, 2, 1]
>>> numbers[::-2] # 取出索引为 7, 5, 3, 1 的元素
[8, 6, 4, 2]
>>> numbers[6::-2] # 取出索引为 6, 4, 2, 0 的元素
[7, 5, 3, 1]
>>> numbers[:6:-2] # 取出索引为 7 的元素
[8]
这里总结一下使用分片操作的一些方法, 分片的使用形式是 :
# 左索引:右索引:步长
left_index:right_index:step
要牢牢记住的是 :
左边索引的元素包括在结果之中,右边索引的元素不包括在结果之中;
当使用一个负数作为步长时,必须让左边索引大于右边索引;
对正数步长,从左向右取元素;对负数步长,从右向左取元素;
2.3 加
序列可以进行「加法」操作,如下:
>>> [1, 2, 3] + [4, 5, 6] # 「加法」效果其实就是连接在一起
[1, 2, 3, 4, 5, 6]
>>> (1, 2, 3) + (4, 5, 6)
(1, 2, 3, 4, 5, 6)
>>> 'hello, ' + 'world!'
'hello, world!'
>>> [1, 2, 3] + 'abc'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
#这里需要注意的是:两种相同类型的序列才能「加法」操作。
2.4 乘
序列可以进行「乘法」操作,比如:
>>> 'abc' * 3
'abcabcabc'
>>> [0] * 3
[0, 0, 0]
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
来源:https://blog.csdn.net/weixin_46039719/article/details/122360717
猜你喜欢
- 1. 扩展Tensor维度相信刚接触Pytorch的宝宝们,会遇到这样一个问题,输入的数据维度和实验需要维度不一致,输入的可能是2维数据或3
- 看下这个 URLconf:from django.conf.urls.defaults import *from mysite.views
- 本文也是开发项目中的一个小经验Tip,虽然很简单,但对很多朋友也有小帮助。我们实际工程中,可能遇到开发环境、预上线环境、线上环境等环境场景,
- 引言最近在学习python,先说一下我学Python得原因,一个是因为它足够好用,完成同样的功能,代码量会比其他语言少很多,有大量的丰富的库
- 本节主要介绍函数,但是函数是由操作组成的。那么就分为两部,一部分为操作一部分为函数。py世界中的操作。操作if:在学习任何一门语言中,关系i
- import Exception# except 在捕获错误异常的时候 是要根据具体的错误类型来捕获的# 用一个块 可以捕获多个不同类型的异
- 详解python中的文件与目录操作一 获得当前路径1、代码1>>>import os>>>print(&
- 本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写
- 一、基本结构语句一)、条件语句age = int(input("请输入你家狗狗的年龄: "))print("&
- 失效的书签们我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签。然而当我们面对成百
- Python脚本编辑使用Python对fasta格式的序列进行基本信息统计预期设计输出文件中包括fasta文件名,序列长度,GC含量以及AT
- 如何导入自己的模块在实际的编程生活当中,我们除了会去import已经存在的包外,当然还会偶尔自定义一些模块,然后来导入,其实一般而言,自定义
- Numpy通过观察Python的自有数据类型,我们可以发现Python原生并不提供多维数组的操作,那么为了处理矩阵,就需要使用第三方提供的相
- 本文实例分析了python对json的相关操作。分享给大家供大家参考,具体如下:什么是json:JSON(JavaScript Object
- 本文实例为大家分享了python自动发送报警监控邮件 的具体代码,供大家参考,具体内容如下因为有一些日常任务需要每日检查日否执行正确,所以需
- 本文实例讲述了Python3.5变量、数据结构、条件和循环语句、break与continue语句。分享给大家供大家参考,具体如下:1、变量:
- CategoricalDtype自定义排序当我们的透视表生成完毕后,有很多情况下需要我们对某列或某行值进行排序。排序有很多种方法。例如sor
- 在此之前,我写了两篇关于ASP结合XML的贴子,分别介绍了用XML取代数据库和用XML整合数据库这两方面的技术,让数据库在某种情况下不再是我
- 1.问题描述2.解决方案(1)Dataloader里面不用cv2.imread进行读取图片,用cv2.imread还会带来一系列的不方便,比
- 在学习 Python 类的时候,会碰见类中有 __init__() 这样一个函数,其实它就是 Python 的构造方法。构造方法类似于类似