第三章 数据结构

3.1 序列

3.1.1 索引

序列中的每一个元素都有一个编号,也称为索引。这个索引是从0开始递增的,即下标为0表示第一个元素,下标为1表示第2个元素,以此类推。

索引可以是负数。这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引值是-1,倒数第二个元素的索引值为-2,以此类推。

注意:在采用负数作为索引值时,是从-1开始的,而不是从0开始的,即最后一个元素的下标为-1,这是为了防止与第一个元素重合。

3.1.2 切片

实现切片操作的格式

sname[start:end:step]

说明:
sname:表示用户创建的序列的名称
start:表示切片的开始位置(包括),如果不指定,默认为0
end:表示切片的截止位置(不包括),如果不指定,默认为序列的长度.
step:表示切片的步长,如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

3.1.3 序列相加

在Python中,支持两种相同类型的序列相加操作,即将两个序列进行连接,不会去除重复的元素,使用加(+)运算符实现。
说明:在进行序列相加时,相同类型的序列是指同为列表、元组、集合等,序列中的元素类型可以不同。
注意:不能将列表和元组相加,也不能将列表和字符串相加。

3.1.4 检查某个元素是否是序列的成员

语法格式

value in sequence

实例:

number = [1,2,3,4,5]
print(6 in number)

运行上面的代码,将显示结果True,表示在序列中存在指定的元素;如果显示为False则表示不在序列里

3.1.5 计算序列的长度、最大值和最小值

函数作用
list()将序列转换为列表
str()将序列转换为字符串
sum()计算元素和
sorted()对元素进行排序
reversed()反向序列中的元素
enumerate()将序列组合为一个索引序列,在for循环中用得比较多

3.2 列表

3.2.1 列表的创建和删除

三种创建列表的方法
1️⃣ 使用赋值运算符直接创建列表
语法格式

listname = [元素1,元素1,元素2,元素3,...,元素n]

2️⃣ 创建空列表

emptylist = []

3️⃣ 创建数值列表
在Python中,可以使用list)函数直接将range()函数循环出来的结果转换为列表。
list()函数的基本语法如下:

list(data)

实例:创建1~10(不包括10)的所有偶数的列表。

list(range(1,10,2))

4️⃣ 删除列表
对于已经创建的列表,不再使用时,可以使用del语句将其删除。语法格式如下:

del listname

3.2.2 访问列表元素

直接使用print()函数打印即可

3.2.3 遍历列表

1️⃣ 直接使用for循环语句直接使用for循环遍历列表,只能输出元素的值。

for i in  listname:
	print(i)

2️⃣ 使用for循环和enumerate()函数实现
使用for循环和enumerate()函数可以实现同时输出索引值元素内容

for index, item in enumerate( listname):

3.2.4 添加、修改和删除列表元素

1️⃣ 添加元素

listname.append(obj)  #只能添加一个元素
listname.extend(seq)  #添加一个序列seq的全部元素

2️⃣ 修改元素
修改列表中的元素只需要通过索引获取该元素,然后再为其重新赋值即可。
3️⃣ 删除元素
删除元素主要有两种情况,一种是根据索引删除,另一种是根据元素值进行删除。
□ 根据索引删除

listname = ["王者荣耀","绝地求生""穿越火线"]
del listname[0] # 删除王者荣耀
print(listname) # 查看

□ 根据元素值删除

listname = ["王者荣耀","绝地求生""穿越火线"]
listname.remove("王者荣耀") # 删除王者荣耀
print(listname) # 查看

3.2.5 对列表进行统计和计算

1️⃣ 获取指定元素出现的次数
使用count()实现,语法如下:

listname.count(obj)
参数说明:
listname :表示列表的名称。
obj :表示要判断是否存在的对象,这里只能进行精确匹配,即不能是元素值的一部分。
返回值:元素在列表中出现的次数。

2️⃣ 获取指定元素首次出现的下标
使用列表对象的index()方法可以获取指定元素在列表中首次出现的位置(即索引)。基本语法格式如下:

listname.index(obj)

3️⃣ 3.统计数值列表的元素和
在Python中,提供了sum()函数用于统计数值列表中各元素的和。语法格式如下:

sum(iterable[,start])
参数说明:
iterable:表示要统计的列表。
start:表示统计结果是从哪个数开始(即将统计结果加上start所指定的数),是可选参数,若未指定,则默认为0

3.2.6 对列表进行排序

在实际开发时,经常需要对列表进行排序,Python 中提供了两种常用的对列表进行排序的方法:
1️⃣ 使用列表对象的sort()方法

listname.sort(key=None, reverse=False)
参数说明:
listname :表示要进行排序的列表。
key: 表示指定从每个元素中提-一个用于比较的键(例如,设置“key=str.lower”表示在排序时不区分字母大小写)。
reverse: 可选参数,如果将其值指定为 True,则表示降序排列;如果为False, 则表示升序排列,默认为升序排列。
使用sort()方法进行数值列表的排序比较简单,但是使用sort()方法对字符串列表进行排序时,采用的规则是先对大写字母排序,然后再对小写字母排序.

2️⃣ 使用内置的sorted()函数实现
在Python中,提供了一个内置的sorted)函数,用于对列表进行排序。使用该函数进行排序后,原列表的元素顺序不变。storted() 函数的语法格式如下:

sorted(iterable, key=None, reverse=False)
参数说明:
iterable:表示要进行排序的列表名称。
key: 表示指定从每个元素中提取一个用于比较的键(例如,设置“key=str.lower” 表示在排序时不区分字母大小写)。
reverse: 可选参数,如果将其值指定为True,则表示降序排列;如果为False, 则表示升序排
列,默认为升序排列。

3.2.7 列表推导式

1️⃣ 生成指定的范围的数值列表
语法格式:

list = [Expression for var in range]
参数说明:
list:表示生成的列表名称。
Expression :表达式,用于计算新列表的元素。
var:循环变量。
range :采用range()函数生成的range对象。

实例:

import random
list = [random.randint(10,100) for i in range(10)] # 要生成一个包括10个随机数的列表,要求数的范围在10~100(包括)之间,
print("生成的随机数为:",list)

2️⃣ 根据列表生成指定需求的列表
语法格式如下:

newlist = [Expression for var in list]
参数说明:
newlist:表示新生成的列表名称。
Expression:表达式,用于计算新列表的元素。
var:变量,值为后面列表的每个元素值。
list:用于生成新列表的原列表。

实例:给定一个商品的价格列表,然后推出商品打五折后的列表。代码如下:

price = [20,35,30,42,41,67]
sale = [int(x*0.5) for x in price]
print("原价:",price)
print("五折后价格:",sale)

3️⃣ 从列表中选择符合条件的元素组成新的列表,语法格式如下:

newlist = [Expression for var in list of condition]
参数说明:
newlist:表示新生成的列表名称。
Expression:表达式,用于计算新列表的元素。
var:变量,值为后面列表的每个元素值。
list :用于生成新列表的原列表。
condition:条件表达式,用于指定筛选条件。

实例:给定一个商品的价格列表,然后生成商品价格高于40元的列表,代码如下:

price = [20,35,30,42,41,67]
sale = [x for x in price if x > 40]
print("原价:",price)
print("价格高于40元的:",sale)

3.2.8 二维列表的使用

二维 列表中的信息以行和列的形式表示,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
1️⃣ 直接定义二维列表

listname = [[元素11,元素12,...,元素1n],[元素21,元素22,...,元素2n],...,[元素n1,元素n2,...,元素nn]]

2️⃣ 使用嵌套的for循环创建
3️⃣ 使用列表推导式创建(详见3.2.7)

3.3 元组

3.3.1 元组的创建与删除

1️⃣ 使用赋值运算符直接创建元组

tuplename = (元素1,元素2,...,元素n)

2️⃣ 创建空元组

emptytuple = ()

3️⃣ 创建数值元组

tuple(data)

实例:

tuple(range(0,10,1))

4️⃣ 删除元组

del tuplename

3.3.2 访问元组元素

s = ('Python','云南')
print(s)

3.3.3 修改元组元素

同列表,只是将[ ]换为( )

3.3.4 元组

同列表,只是将[ ]换为( )

3.4 字典

3.4.1 字典的创建与删除

格式:

dictionary =
{ key1' : 'value1', 'key2' :'value2',..., 'keyn': 'valuen',}
参数说明:
dictionary :表示字典名称。
key1、key2..keyn: 表示元素的键,必须是唯一的, 并且不可变
valuel、value2、valuen:表示元素的值,可以是任何数据类型,不是必须唯一的

1️⃣ 通过映射函数创建字典

dictionary = dict(zip(list1,list2))
参数说明:
dictionary :表示字典名称。
zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想获取元组,可以将zip对象使用tuple() 函数转换为元组;如果想获取列表,则可以使用list()函数将其转换为列表。

2️⃣ 通过给定的关键字参数创建字典

dictionary = dict(key1=value1,key2=value2,keyn=valuen)

3.4.2 通过键值对访问字典

dictionary.get(key[, default])
参数说明:
dictionary:为字典对象,即要从中获取值的字典。
key:为指定的键。
default:为可选项,用于指定当指定的“键”不存在时,返回一个默认值,如果省略,则返回None。

3.4.3 遍历字典

使用字典对象的items()方法可以获取字典的“键-值对”列表,语法格式如下:

dictionary.items( )

3.4.4 添加、修改和删除字典元素

添加格式:

dictionary[key] = value

3.5 集合

3.5.1 集合的创建

1️⃣ 直接使用“{}”创建集合

setname = {元素1,元素2,...,元素n}

2️⃣ 使用set()函数创建

setname = set(iteration)

3.5.2 集合的添加和删除

1️⃣ 向集合中添加元素

setname.add(element)

2️⃣ 从集合中删除元素

setname.remove(元素)

3.5.3 集合的交集、并集和差集运算

集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用“&”符号,进行并集运算时使用“|”符号,进行差集运算时使用“-”符号,进行对称差集运算时使用“^”符号。

3.6 列表、元组、字典和集合的区别

数据结构是否可变是否重复是否有序定义符号
列表(list)可变可重复有序[ ]
元组(tuple)不可变可重复有序()
字典(dictionary)可变可重复无序{key:value}
集合(set)可变不可重复无序{}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X射线双星

希望您继续支持我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值