安迪Python

V1

2022/10/06阅读:14主题:默认主题

32. 序列及序列的成员运算

32. 序列及序列的成员运算

1. 序列概述

序列是一种可迭代的、元素有序的容器类型数据。

【可迭代对象】

可迭代对象是Python语言中较新的概念,它实际保存的是序列或者可以一次产生一个结果的对象。(仅做了解,不需要掌握)

【常见的可迭代对象】

  1. 字符串

  2. 列表

  3. 元组

  4. 字典

  5. 集合

  6. range函数返回结果

【什么是可迭代】

可迭代我们可以简单理解为能够使用for循环进行取值操作,或者说是可以使用for循环遍历。

【备注】for循环后面会讲。

2. 常见的序列类型

  1. 字符串(str):按照一定的顺序组合在一起的字符。字符串是有顺序的,例如:“金融科技”和“科技金融”就是2个不同的字符串。

  2. 列表(list):包含0个或多个不同类型元素的可变序列类型,用方括号将元素括在一起,元素是有顺序的,可进行修改的。例如:[1,2]和[2,1]就是2个不同的列表。

  3. 元组(tuple):包含0个或多个不同类型元素的不可变序列类型,用圆括号将元素括在一起,元素是有顺序的,不可以进行修改的。例如:(1, 2)和(2, 1)就是2个不同的元组。

【字符串的有序性】

# 新建2个字符串
str_1 = "金融科技"
str_2 = "科技金融"

# 用==判断两个字符串是否相等
print(str_1 == str_2)

【终端输出】

False

返回布尔值False,表示上述2个字符串不相等。

【知识回顾】

一个等于号=称为赋值运算符,作用是给变量赋值。
两个等于号== 称为比较运算符,作用是判断==左右两边的值是否相等。
相等返回布尔值True。
不相等返回布尔值False。

【列表元素的有序性】

# 新建2个列表
list_1 = [12]
list_2 = [21]

# 用==判断两个列表是否相等
print(list_1 == list_2)

【终端输出】

False

返回布尔值False,表示上述2个列表包含的元素相同,但顺序不同,即为不同的列表。

【元组元素的有序性】

# 新建2个元组
tuple_1 = (12)
tuple_2 = (21)

# 用==判断两个元组是否相等
print(tuple_1 == tuple_2)

【终端输出】

False

返回布尔值False,表示上述2个元组包含的元素相同,但顺序不同,即为不同的元组。

3. 序列类型数据的操作

所有序列类型的数据都可以进行一些特定的操作,例如:

  1. 索引

  2. 切片

  3. 连接(加和乘)

  4. 成员测试

  5. 统计序列的长度

  6. 计算元素出现的次数

4. 序列的索引操作

温馨提示⚠️:索引通常从0开始编号!

⚠️正索引从左往右开始编号,编号从0开始!

⚠️负索引从右往左开始编号,编号从-1开始!

32-1.索引取值
32-1.索引取值

【备注】上述图片来自关东升的《看漫画学Python》。

5. 序列的切片操作

【语法】

序列[star:end:step]

序列[开始字符:结束字符:步长]

  1. 参数start:表示要取的第1元素的索引(包括该元素),如果不指定,则默认为0

  2. 参数end:表示要取的最后1个元素的索引(不包括该元素),如果不指定,则默认为列表的长度。

  3. 参数step:表示切片的步长。如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

【温馨提示】切片取值时包括开始字符,不包括结束字符,简单记忆为含前不含后

6. 序列的连接(序列的加和乘)

+和乘*运算符也可以用于序列中的元素。
+运算符可以将多个序列连接起来。
*运算符可以将序列重复多次。

32-2序列的加和乘
32-2序列的加和乘

【加法操作】

# 新建2个字符串
str_1 = "Hello"
str_2 = "World"

# 用+连接两个字符串
print(str_1+str_2)

【终端输出】

HelloWorld
# 新建3个列表
list_1 = [12]
list_2 = [34]
list_3 = [45]

# 用+连接多个列表
print("列表1+2+3:", list_1 + list_2 +list_3)

# 用+连接多个列表
print("列表3+2+1:", list_3 + list_2 +list_1)

【终端输出】

列表1+2+3: [1, 2, 3, 4, 4, 5]
列表3+2+1: [4, 5, 3, 4, 1, 2]

注意观察输出结果,都是列表相加,但连接的顺序不同,输出结果也不同。

【乘法操作】

# 新建1个字符串
str_1 = "Hello"

# 用*将字符串重复2次
print(str_1*2)

【终端输出】

HelloHello
# 新建1个元组
tuple_1 = ("张三",)

# 用*将元组重复5次
print(tuple_1 * 5)

# 查看数据类型
print(type((tuple_1 * 5)))

【终端输出】

('张三', '张三', '张三', '张三', '张三')
<class 'tuple'>

【温馨提示】注意元组只有1个元素时,该元素后面必须加一个英文逗号,即字符串"张三"后面有一个英文逗号,

7. in 和not in 成员测试

【语法】

  1. 要判断的内容
  2. 成员运算符in或not in
  3. 判断序列
32-3成员运算符语法
32-3成员运算符语法

运算符in可以判断某个元素是否在序列中,如果元素序列中,in表达式返回布尔值True,否则返回布尔值False。

运算符not in可以判断某个元素是否在序列中,如果元素不在序列中,not in表达式返回布尔值True,否则返回布尔值False。

# 新建一个列表,存储班级学生名字
name_list = ["张三","李四","王五","赵六","刘一","陈二","孙七","周八"]

# 判断班里有没有一个叫赵六的人
# in表示有
print("赵六" in name_list)

# not in表示没有
print("赵六" not in name_list)

【终端输出】

True
False

in 运算符返回的布尔值是True,表示班里有一个叫赵六的人。 not in 运算符返回的布尔值是False,表示班里有一个叫赵六的人。

# 新建一个列表,存储班级学生名字
name_list = ["张三","李四","王五","赵六","刘一","陈二","孙七","周八"]

# 判断班里有没有一个叫周里的人
# in表示有
print("周里" in name_list)

# not in表示没有
print("周里" not in name_list)

【终端输出】

False
True

in 运算符返回的布尔值是False,表示班里没有一个叫周里的人。 not in 运算符返回的布尔值是True,表示班里没有一个叫周里的人。

【单双引号不影响判断结果】

# 新建一个列表,存储班级学生名字
name_list = ["张三","李四","王五","赵六","刘一","陈二","孙七","周八"]

# 判断班里有没有一个叫赵六的人
print('赵六' in name_list)

【终端输出】

True

列表里的"张三"用的是双引号,成员运算里的'张三'用的是单引号,这里的单双引号不影响最终的判断结果。

8. 总结

32-4.序列总结
32-4.序列总结

【序列类型比较】

32-5.序列类型比较
32-5.序列类型比较

9. 课后练习

【1.单选题】

关于列表和元组,表示错误的是:

A.列表和元组都属于序列。

B.列表用中括号 [ ] 表示,元组用 ( )。

C.对元组和列表都可以进行索引取值,常见格式为 list[索引] , tuple[索引]

D.对元组和列表都可以进行元素的添加,需要用到 append( )。

【正确答案D】元组是不可以进行元素的添加及修改的。

【2.代码题】

用索引取值的方式,输出 stock_info 列表内 stock_name 元组中的 保利地产

# 圆括号新建1个元组,存储股票名称
stock_name = ('浦发银行''中兴通讯''保利地产')

# 方括号新建一个列表,存储股票信息
stock_info = [stock_name, '开盘价''收盘价']

# 对 stock_info 列表进行索引取值
# 先取出stock_name,再从 stock_name 中取出 `保利地产`
print(stock_info[0][2])

【终端输出】

保利地产

stock [stɒk]:股票,库存。

【3.代码题】

向上述stock_info列表中增加最高价最低价2个元素。

stock_name = ('浦发银行''中兴通讯''保利地产')

stock_info = [stock_name, '开盘价''收盘价']

# 用 append() 给列表 stock_info 添加元素`最高价`
stock_info .append('最高价')
# 用 append() 给列表 stock_info 添加元素`最低价`
stock_info .append('最低价')

# 输出列表验证结果
print(stock_info)  

【终端输出】

[('浦发银行', '中兴通讯', '保利地产'), '开盘价', '收盘价', '最高价', '最低价']

【4.代码题】

把stock_name列表里的浦发银行替换成工商银行
输出stock_name列表验证结果。

stock_name = ['浦发银行''中兴通讯''保利地产']

stock_name[0] = '工商银行'

print(stock_name)

【终端输出】

['工商银行', '中兴通讯', '保利地产']

分类:

后端

标签:

Python

作者介绍

安迪Python
V1