Bootstrap

Python的序列、列表和元组

一、序列

序列是python中的最基本的数据结构,它是一块用于存放多个值的连续内存空间,并且按照一定的顺序排列。每一个值(称为元素)都分配一个数字,称为索引或者位置,通过该索引可以获得相应的值。

python中有五个常用的序列结构,分别是:列表,元组、集合和字符串。python中的大部分序列结构都可以进行通用操作,包括索引、切片、序列相加、乘法、检查某个元素是否是序列的成员、长度、最小值、最大值以及元素和等。

1.索引

序列中的每一个元素都有一个编号,也成为索引。Python中的索引是从0开始递增的,即索引值为0表示第一个元素,以此类推。

#列表
x1=[2,4,6,8,10,12,14]
print(x1[0])
print(X1[1])
print("----------")

#结果
2
4
----------

通过上述代码可知,序列的元素是从0开始从左往右编号的,元素通过编号进行访问。索引非常灵活,还可以是负数。

#列表
x1=[2,4,6,8,10,12,14]
print(x1[-1)
print(X1[-2])
print("----------")


#结果
14
12
----------

python也可以从右往左编号,只要在前面加个负号即可。

2.切片

切片操作可以访问一定范围内的元素。实现切片操作的语法格式如下:

sname[start:end:step]

参数说明如下:

sname:表示序列的名称

start:表示切片的起始位置,包括该位置,如果不指定则默认为0

end:表示切片的结束位置,不包括该位置,如果不指定则默认为序列的长度

x1=[2,4,6,8,10,12,14]

print(x1[:5])
print(x1[5:])

print(x1[0:4])
print(x1[2:6])

print(x1[-5:-5])

print(x1[:])

print(x1[1:5:2])
print(x1[1:5:3])

print(x1[5::-1])
print(x1[5::-2])

#结果
[2,4,6,8,10]
[12,14]

[2,4,6,8]
[6,8,10,12]

[6,8,10]

[2,4,6,8,10,12,14]

[4,8]
[4,10]

[12,10,8,6,4,2]
[12,8,4]

由上面代码可知,切片也支持按照从右往左的顺序访问序列中的元素,并且当负数作为步长时,Python会从序列的尾部开始向左获取元素,直到第一个元素为止。【注意:步长参数不支持为0,否则会产生错误】

3.序列相加

在python中,使用“+”可以实现两种相同类型的序列相加操作,即两个序列进行连接,但是不去除重复的元素。【注:不同类型的序列是不能相加的】

4.乘法

可以使用“*”做乘法,在python中,使用数字n乘以一个序列会产生新的序列,新序列的内容为原来序列被重复n次的结果。

5.计算序列的长度、最小值、最大值以及元素和

1)使用len()函数计算序列的长度,即返回序列包含多少个元素。

2)使用min()函数返回序列中最小的元素

3)使用max()函数返回序列中最大的元素

4)使用sum()函数返回序列中的元素和

【注意】:sum()函数求和的要求是序列元素必须都为int型,由于字符串序列都是字符串,所以sum()函数无法对字符串序列进行求和。

二、列表

列表是由一系列按特定顺序排列的元素组成。在Python中,列表是内置的可变序列,用中括号“[]”表示,并且用逗号分隔其中的元素。列表元素可以是整数、实数、字符串、列表、元组等任何类型的内容,在同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。

1)创建列表

创建列表时,可以用赋值运算符“=”直接将一个列表赋值给变量。

2)删除列表

对于以及创建好的列表,若不再使用,可以使用del语句删除

color=["white","red","blue"]
del color

1.列表排序

1)使用列表对象sort()方法对列表进行排序

2)使用内置的sorted()函数对列表进行排序【在python中,提供了一个内置的sorted()函数,用于对列表排序后,原列表的元素顺序不变】

2.列表的索引与切片

1)作为列表的基本操作之一的索引,是用来获得列表中的一个元素。它沿用序列类型的索引方式,即正向递增序号或者反向递增序号。索引序号不能超过列表的元素范围,否则会产生IndexError错误。例如,想获取用户输入年份的第四位:

>>> fourth=input('year:')[3]
year: 2005
>>> fourth
‘5’

对列表类型元素要进行遍历操作时可以使用遍历循环。可以使用for循环和enumberate()函数实现遍历列表。

2)切片

切片适用于提取序列的一部分,使用两个索引并用冒号分隔,它们的编号非常重要:第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号。

>>> numbers=[1,2,3,4,5,6,7,8,9,10]
>>> numbers[3:6][4,5,6]
>>> numbers[0:1][1]

即第一个索引指定的元素包含在切片内,但是第二个索引指定的元素不包含在切片内。

3.访问、修改、添加和删除列表元素

1)访问列表元素

若要访问列表中的任意元素,只需要将该元素的位置告诉Python。要访问列表元素,可以指出列表的名称,再指出元素的索引,并将后者放在中括号内。

>>> color=["white","red","bule"]
>>> print(color[0])
white

2)修改列表元素

修改列表元素只需要通过索引获取该元素,再为其重新赋值即可。

3)添加列表元素

列表不能通过索引来添加元素,但Python提供了其他方式在既有列表中添加新元素。

①采用append()和extend()两种方法在列表末尾添加新元素【注意:append()方法每次只能增加一个新元素,如果想增加多个,使用extend()方法。append()方法后面无论是单个元素还是一个列表,都会把它当成一个新元素添加在原来的列表后面,而extend()方法则会展开。】

②采用insert()方法在列表中任意位置添加新元素。

4)删除列表元素

①使用del语句删除列表元素

②使用pop()方法删除列表元素

③根据元素值删除列表元素。

5.列表推导式

使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表

a1=[x for x in range (10)]
print(a1)
a2=[10,20,30,40,50,60,70,80,90,100]
print([int(x*0.5) for x in a2])
a3=[x for x in range(15) if x%3==0]
print(a3)

#输出结果如下
[0,1,2,3,4,5,6,7,8,9]
[5,10,15,20,25,30,35,40,45,50]
[0,3,6,9,12]

6.列表的其他操作

①使用reverse()方法反转列表元素的排列顺序【注意:只能反转排列顺序】

②使用count()方法统计某个元素在列表中出现的次数

三、元组

元组的定义如下:①元组是一种序列,与列表相似,可以使用小括号去定界;②元组中各元素之间用逗号隔开;③元组本身是一个不可变的数据类型,没有增删改查,如果要修改,可以采用其他数据类型对元组重新赋值;④元组内可存储任意类型。

1.元组的创建、访问以及删除和修改都和列表基本相同。

2.元组的推导式的表现形式和列表的推导式类似

3.使用元组的推导式生产的结果并不是一个元组或者列表,而是一个生成器对象。要使用该生成器对象可以将其转换成元组或者列表。其中,转换为元组使用tuple()函数,而转换为列表则使用list()函数。

4.元组的其他操作与列表类似(例如遍历元组)

;