Python数据类型-序列sequence

目录
  • 1 概述
  • 2 基本操作
    • 2.1 索引
    • 2.2 切片
    • 2.3 加
    • 2.4 乘

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]

到此这篇关于Python数据类型-序列sequence的文章就介绍到这了,更多相关Python数据类型 序列sequence内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Python3中的Sequence type的使用

    其实本来是要reverse一下list的,就去查了一下list[::-1]是什么意思,发现还有很多要注意的地方,所以就记一下. 主要是参照https://docs.python.org/3/library/stdtypes.html?highlight=list#list 首先Sequence type有三种 list tuple range slice [i:j:k]表示的是slice of s from i to j with step k, 对三种类型都有用 >>> a = [1,

  • Python中关于Sequence切片的下标问题详解

    前言 在python中, 切片是一个经常会使用到的语法, 不管是元组, 列表还是字符串, 一般语法就是: sequence[ilow:ihigh:step] # ihigh,step 可为空; 为了简短易懂, 暂时排除step的用法考虑 先来简单示范下用法 sequence = [1,2,3,4,5] sequence [ilow:ihigh] # 从ilow开始到ihigh-1结束 sequence [ilow:] # 从ilow开始直到末尾 sequence [:ihigh] # 从头部开始

  • python range()函数取反序遍历sequence的方法

    python中的range函数取反序有两种方式 第一种:先构建一个列表,然后对列表中的元素进行反转. 例如: a=range(5) for i in reversed(a): print(i) #4 3 2 1 0 第二种:是利用range()函数本身的特点来进行反序. 例如: for i in range(4,-1,-1): print(i) #4 3 2 1 0 range(a,b)函数只包括前面的a,不包括后面的b,步长默认为1. 以上这篇python range()函数取反序遍历sequ

  • Python数据类型-序列sequence

    目录 1 概述 2 基本操作 2.1 索引 2.2 切片 2.3 加 2.4 乘 1 概述 在前面,我们已经对Python学习做了系统的知识梳理(Python思维导图),我们接下来把知识点分节进行细讲.这一节,我们讲解序列. 在介绍 Python 的常用数据类型之前,我们先看看 Python 最基本的数据结构 -——序列(sequence).序列的一个特点就是根据索引(index,即元素的位置)来获取序列中的元素,第一个索引是 0,第二 个索引是 1,以此类推. 所有序列类型都可以进行某些通用的

  • Python语言中的数据类型-序列

    目录 一.什么是序列数据类型? 二.序列数据类型的基本操作 1.序列的通用方法 2.通过索引访问数据 3.同类型的序列进行拼接 4.判断序列成员 5.序列的排序操作 6.内置函数all()与any() 7.序列的拆分 三.列表 1.创建列表 2.向列表内添加数据 3.删除列表内的数据 三.元组 四.字符串 五.字节序列 前言:前面我们提到了Python数据类型中的内置数值类型与字符串类型.今天学习一下Python的序列数据类型,要知道的是在Python中没有数组这一数据结构,也没有提供直接创建数

  • Python数据类型和常用操作

    目录 一.数值 二.字符串 三.列表 四.元组 五.字典 六.集合 一.数值 数值数据类型用于存储数值,数据类型不可改变,改变会分配一个新的对象,在Python中,“与或非”布尔操作使用关键词and/or/not. 基本常用操作代码: print(True+False) #输出为1,True默认为1,False为0 print(True or False) #输出True,关键字or执行"或"操作 print(5//2) #输出2,//为取整运算符 print(5%2) #输出1,%为

  • Python中序列的修改、散列与切片详解

    前言 本文主要给大家介绍了关于Python中序列的修改.散列与切片的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Vector类:用户定义的序列类型 我们将使用组合模式实现 Vector 类,而不使用继承.向量的分量存储在浮点数数组中,而且还将实现不可变扁平序列所需的方法. Vector 类的第 1 版要尽量与前一章定义的 Vector2d 类兼容. Vector类第1版:与Vector2d类兼容 Vector 类的第 1 版要尽量与前一章定义的 Vector2d

  • 浅谈Python数据类型之间的转换

    Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 complex(real [,imag]) 创建一个复数 str(x) 将对象 x 转换为字符串 repr(x) 将对象 x 转换为表达式字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s) 将序列 s 转换为一个元组 list(s) 将序列 s 转换为一个

  • Python数据类型学习笔记

    带你走进数据类型 一:整数.浮点数 Python中整数和浮点数的定义以及运算和C++都是一样的,我在这里就不需多说了,我就说明一点:Python相对于C/C++而言,定义整数没有int 和 long long 这些区分的,直接赋值即可.这就体现出了Python简洁的功能. 二:布尔值.空值 首先我们先谈谈Python中的布尔值True和False.在Python中可以直接使用True和False(请注意大小写),也可以通过表达式计算出True或者False. 另外,还有三种常见的布尔运算符and

  • python遍历序列enumerate函数浅析

    enumerate函数用于遍历序列中的元素以及它们的下标. enumerate函数说明: 函数原型:enumerate(sequence, [start=0]) 功能:将可循环序列sequence以start开始分别列出序列数据和数据下标 即对一个可遍历的数据对象(如列表.元组或字符串),enumerate会将该数据对象组合为一个索引序列,同时列出数据和数据下标. 举例说明: 存在一个sequence,对其使用enumerate将会得到如下结果: start        sequence[0]

  • Python数据类型中的“冒号“[::]——分片与步长操作示例

    本文实例讲述了Python数据类型中的"冒号"[::]--分片与步长操作.分享给大家供大家参考,具体如下: 例如有如下字符串: string = "welcome to jb51^_^" 可以使用分片符和步长符:来给字符串进行分片和定义步长 string = "welcome to jb51^_^" #默认返回全部 print string[:] #返回1到9结果 print string[1:9] #返回1到9结果,步长为1 print str

  • Python数据类型之List列表实例详解

    本文实例讲述了Python数据类型之List列表.分享给大家供大家参考,具体如下: list列表 1.概述: 通过之前的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的平均年龄. 若按照之前的方式来解决 age1 = 10 age2 = 12 ... age20 = 12 average = (age1 + age2 +...+age20)/20 在这里,很显然这种方法显得很麻烦,而python提供了一种解决方案,就是使用列表,可以随时添

  • Python数据类型之列表和元组的方法实例详解

    引言 我们前面的文章介绍了数字和字符串,比如我计算今天一天的开销花了多少钱我可以用数字来表示,如果是整形用 int ,如果是小数用 float ,如果你想记录某件东西花了多少钱,应该使用 str 字符串型,如果你想记录表示所有开销的物品名称,你应该用什么表示呢? 可能有人会想到我可以用一个较长的字符串表示,把所有开销物品名称写进去,但是问题来了,如果你发现你记录错误了,想删除掉某件物品的名称,那你是不是要在这个长字符串中去查找到,然后删除,这样虽然可行,那是不是比较麻烦呢. 这种情况下,你是不是

随机推荐