(1) 序列
在Python语言中,序列是最基本的数据结构类型之一。序列中的每个元素可以是任何类型(当然也可以是序列),每个元素被分配一个序号,即元素位置(也称为索引)。第一个元素的序号规定为0,第二个为1,依次类推。
Python中的序列包括6种:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。其中最常用的是列表、元组和字符串。
在表示形式上,列表使用中括号 [ ] ,而元组使用圆括号()。
列表和元组的区别不仅表现在它们的表示形式上,它们的本质区别在于,列表是可以修改的而元组不能。如下例所示:
>>> lsa=[1,2,3] #lsa是列表
>>> tup=(1,2,3) #tup是元组
>>> lsa[0]=2
>>> tup[0]=2
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
tup[0]=2
TypeError: 'tuple' object does not support item assignment
上面代码中,lsa[0]表示序列lsa中第一个元素,tup[0]同理。可以看到当尝试修改元组中的元素时,程序会报错终止。
它们的这种特性也决定了列表的使用比元组更灵活,而且大部分情况下列表都可以代替元组。既然如此,为什么还要元组呢?元组的不可改变性,确保元组在程序中不会被另一个应用修改,而列表就没有这样的保证。同时,有些地方列表是无法使用的,如字典中的键值。
(2)序列基本操作
在Python语言中序列类型虽然有6种,但它们之间存在一些通用操作,这些操作是最基本的也是最常用的。在本节中将以列表为例来演示序列的基本操作。
1)索引
序列中每个元素都有编号(同样从0开始编号),这些元素可以通过编号来进行访问和读取。使用方法为: 序列[编号]
>>> a=[1,2,3,4]
>>> a[0]
1
例: a=[1,2,3,4]
print(a[0],a[2]) #输出 1 3
如果想读取倒数第几个元素,但是不知道序列的长度时,也可以从最后同一个元素开始计数,如果使用这种方式,最后一个元素的编号是-1,第二个为-2,依次类推,如下例所:
>>> a[-1]
4
例: a=[1,2,3,4]
print(a[-1],a[-2]) #输出 4 3
2)切片
在Python中可以使用索引每次读取一个值,也可以使用切片读取序列中的一段值。使用方法: 序列名字[开始编号:结束编号后一个:步长]
其中默认步长为1。如下例所示:
>>> a=[1,2,3,4,5]
>>> a[1:3]
[2, 3]
>>> a[1:-1]
[2, 3, 4]
>>> a[1:] # : 后未给定值表示
[2, 3, 4, 5]
>>> a[:-1] # : 前未给定元素表示从第一个元素开始
[1, 2, 3, 4]
>>> a[:] # : 前后都为给值,表示读取整个序列
[1, 2, 3, 4, 5]
注意:使用切片所得到的结果也是序列,其类型不变
# 例:程序代码
a=[1,2,3,4,5]
print(a[1:3], a[1:-1], a[:-1],a[:])
#输出结果:[2, 3] [2, 3, 4] [2, 3, 4, 5] [1, 2, 3, 4, 5]
c=[a[1:3],a[1:-1],a[:-1],a[:]]
print(c) #输出结果:[[2, 3], [2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4, 5]]
3)序列加
可以使用“+”将相同类型的序列连接在一起。
使用方法: 序列+序列
要求前后两个序列是相同类型。如下例所示:
>>> a=[1,2,3]
>>> b=[2,3,4]
>>> a+b # a,b均是列表
[1, 2, 3, 2, 3, 4]
>>> a=[1,2,3]
>>> b=(1,2,3)
>>> a+b # a是列表,b是元组,不能连接
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
a+b
TypeError: can only concatenate list (not "tuple") to list
例: a=[1,2,3,4,5]
b=a[1:3]+a[1:-1]+a[:-1]+a[:]
print(b) #输出结果:[2, 3, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 5]
4)序列乘
可以使用“*”使序列重复n次得到一个新的序列。
使用方法: 序列*n,其中n表示重复次数
如下例所示:
>>> a=[1,2,3]
>>> a*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
# 例:
a=[1,2,3]
b=a*3
print(b) #输出结果:[1,2, 3, 1,2,3, 1, 2, 3]
print(a*2) #输出结果:[1,2, 3, 1,2, 3]
5) in
可以使用“in”检查某个元素是否在序列中。
使用方法:元素a in 序列A,如果a在A中,则返回True,否则返回False
如下例所示:
>>> a=[1,2,3]
>>> 1 in a
True
>>> 4 in a
False
#例: 检查某人是否是华夏的学生
hxname=['张三','李四','王五','林明']
name=input("姓名:")
if name in hxname:
print(name,"是华夏的学生!")
else:
print(name,"不是华夏的学生!")
6)函数 len、max、min
len,max和min是Python内建的几个常用的函数,分别返回序列的长度,最大值,最小值。
使用方法:len(序列),max(序列),min(序列)
如下例所示:
>>> num=[1,2,3,4,85]
>>> len(num)
5
>>> max(num)
85
>>> min(num)
1
>>> max(1,2,55)
55
>>> min(2,4,-1)
-1
注意:max,min也可以接受多个数字作为参数,如上面最后两个例子。
#例 使用函数 len、max、min
hxname=['张三','李四','王五','林芳']
age=[19,20,22,21]
print(hxname,age)
print(len(hxname),len(age))
print(max(age),min(age))
print(max(hxname),min(hxname))

