上一篇:Python流程控制语句之跳转语句
文章目录
- 前言
- 一、索引
- 二、切片
- 三、序列相加
- 四、乘法
- 五、检查某个元素是否是序列的成员
- 六、计算序列的长度、最大值和最小值
- 总结
前言
序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列,每个值(称为元素)都分配一个数字,称为索引。通过该索引可以取出相应的值。例如,我们可以把一家酒店看作一个序列,那么酒店里的每个房间都可以看作是这个序列的元素。而房间号就相当于索引,可以通过房间号找到对应的房间。
在Python中,序列结构主要有列表、元组、集合、字典和字符串,对于这些序列结构有以下几个通用的操作。其中,集合和字典不支持索引、切片、相加和相乘操作。
一、索引
序列中的每一个元素都有一个编号,也称为索引。索引是从 0 开始递增的,即下标为 0 表示第一个元素,下标为 1 表示第二个元素,以此类推。如下图所示:
序列的索引也可以是负数,这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引值是 -1,倒数第二个元素的索引值为 -2,以此类推。如下图所示:
注意:在采用负数作为索引值时,是从 -1 开始的,而不是从 0 开始的,即最后一个元素的下标为 -1,这是为了防止与第一个元素重合。
通过索引可以访问序列中的任何元素。例如,定义一个包括 5 个元素的列表,要访问它的第 4 个元素和最后一个元素,可以使用下面的代码:
fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
print(fruits[3]) # 输出第4个元素
print(fruits[-1]) # 输出最后一个元素
结果如下:
榴莲
草莓
说明:关于列表的详细介绍在后面博客会说到。
二、切片
切片是访问序列中元素的另一种方法,它可以访问指定范围内的元素,通过切片操作生成一个新的序列。实现切片操作的语法格式如下:
sname[start:end:step]
参数说明:
- sname:表示序列的名称。
- start:表示切片的开始位置(包括该位置),如果不指定,则默认为 0。
- end:表示切片的截止位置(不包括该位置),如果不指定,则默认为序列的长度。
- step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。
说明:在进行切片操作时,如果指定了步长,那么将按照该步长遍历序列的元素,否则将一个一个遍历序列。
例如,通过切片先获取【2022年中国大学排名】前十位中的第 3 个到第 6个元素,再获取第 2 个、第 4 个和第 6 个元素,可以使用下面的代码:
universities = ["1-清华大学", "2-北京大学", "3-浙江大学", "4-上海交通大学",
"5-复旦大学", "6-南京大学", "7-中国科学技术大学", "8-华中科技大学",
"9-武汉大学", "10-西安交通大学"]
print(universities[2:6]) # 获取第3个到第6个元素
print(universities[1:6:2]) # 获取第2个、第4个和第6个元素
运行代码结果如下:
['3-浙江大学', '4-上海交通大学', '5-复旦大学', '6-南京大学']
['2-北京大学', '4-上海交通大学', '6-南京大学']
三、序列相加
在Python中,支持两种相同类型的序列相加操作,即将两个序列进行连接,不会去除重复的元素,使用加(+)运算符实现。例如,将两个列表相加,可以使用下面的代码:
fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
vegetables = ["茄子", "土豆", "豆角"]
print(fruits+vegetables)
代码运行结果如下:
['苹果', '香蕉', '车厘子', '榴莲', '草莓', '茄子', '土豆', '豆角']
从上面的输出结果中可以看出,两个列表被合成一个列表了。
说明:在进行序列相加时,相同类型的序列是同为列表、元组、字符串等,至于序列中的元素类型可以不同。
例如下面代码也是正确的:
fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
num = [20, 13, 45, 78]
print(fruits+num)
相加后的结果如下:
['苹果', '香蕉', '车厘子', '榴莲', '草莓', 20, 13, 45, 78]
但是不能将列表和元组相加,也不能将列表和字符串相加。例如下面代码就是错误的:
a = "人生苦短,我用Python"
num = [20, 13, 45, 78]
print(a+num)
上面代码运行之后就会产生报错,如下图所示:
四、乘法
在Python中,使用数字 n 乘以一个序列会生成新的序列,新序列的内容为原来序列被重复 n 次的结果。例如下面的代码,将实现把一个序列乘以 3 生成一个新的序列并输出,从而达到 “重要的事情说三遍” 的效果。
love = ["爱你一万年"]
print(love * 3)
运行上面代码,结果显示如下内容:
['爱你一万年', '爱你一万年', '爱你一万年']
五、检查某个元素是否是序列的成员
在Python语言中,可以使用 in 关键字检查某个元素是否为序列的成员,即检查某个元素是否包含在某个序列中。语法格式如下:
value in sequence
其中,value 表示要检查的元素,sequence 表示指定的序列。例如,要检查名称为 fruits 的序列中,是否包含元素 “榴莲”,可以使用下面的代码:
fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
print("榴莲" in fruits)
运行上面的代码,将显示结果为 True,表示序列中存在指定的元素。
另外,在Python中,也可以使用 not in 关键字检查某个元素是否不包含在指定的序列中。例如下面的代码:
fruits = ["苹果", "香蕉", "车厘子", "榴莲", "草莓"]
print("榴莲" not in fruits)
上述代码是判定 “榴莲” 没有在序列 fruits 中,但是 “榴莲” 是在的,所以运行之后结果为 False。如下图所示:
六、计算序列的长度、最大值和最小值
Python中提供了内置函数计算序列的长度、最大值和最小值。分别是:使用 len() 函数计算序列的长度,即返回序列包含多少个元素;使用 max() 函数返回序列中的最大元素;使用 min() 函数返回序列中的最小元素。
例如,定义一个包含 6 个元素的列表,并通过 len() 函数计算列表的长度,可以使用下面的代码:
num = [34, 2, 65, 31, 698, 17]
print("列表num的长度为", len(num))
代码运行之后结果如下:
列表num的长度为 6
就刚才的列表 num,我们使用 max() 函数和 min() 函数来分别计算列表中的最大元素和最小元素,代码如下:
num = [34, 2, 65, 31, 698, 17]
print("列表num中的最大元素为", max(num))
print("列表num中的最小元素为", min(num))
运行上面的代码,将显示以下结果:
列表num中的最大元素为 698
列表num中的最小元素为 2
总结
以上就是今天和大家分享的Python中序列类型的常用操作方法,在开发中使用频率最高的就是索引和切片这两种方法,大家业余多注意练习。喜欢博主文章的都可以点赞+关注,哪些不理解的也可以在评论区留言哦。