sequence 序列
sequence序列是一组有顺序的元素的集合
(严格的说,是对象的集合,但鉴于没有引入对象的概念,暂时说元素)
序列可以包含一个或多个元素,也可以没有任何元素
我们之前所说的基本数据类型,都可以作为序列的元素。元素还可以是另一个序列,以及我们以后的其他对象。
序列有两种:tuple(定值表:也叫元组);和list(列表)
s1 = (2,1.3,'love',5.6,9,False) #是一个tuple
s2 = [True,5,'smile'] #是一个list
print (s1,type(s1))
([True, 5, 'smile'], <type 'tuple'>)
print (s2,type(s2))
([True, 5, 'smile'], <type 'list'>)
tuple和list的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。
一个序列作为另一个序列的元素
s3 = [1,[3,4,5]]
空序列
s4 = []
元素的引用
序列元素的下标从0开始:
print (s1[01])
1.3
print (s2[2])
smile
print (s1[1][2])
v
由于list的元素可更变,你可以对list进行赋值
s2[1] = 3.0
print (s2)
以上输出
3.0
如果你对tuple做这样的操作,会得到错误提示。
所以,可以看到,序列的引用通过s[int]实现,int为下标。
其他引用方式(切片)
范围引用:基本样式[下限:上限:步长]
print (s1[:5]) #从开始到下标4(下标5的元素不在内)
(2, 1.3, 'love', 5.6, 9)
print (s1[2:]) #从下标2到最后
('love', 5.6, 9, 12, False)
print (s1[0:5:2]) #从下标0到下标4(下标5不包括),每个2取元素()
(2, 'love', 9)
print (s1[2:0:-1]) #从下标2到下标1
('love', 1.3)
从上可以看出,在范围引用的时候,如果写明上限,那么这个上限本身不包括在内。
尾部元素引用
print (s1[-1]) #序列最后一个元素
print (s1[-3]) #序列倒数第三个元素
字符串是元组
字符串是特殊的元组,因此可以执行元组的相关操作。
str = 'abcdef'
print (str(2:4))
'cd'
总结
tuple元素不可变,list元素可变
序列的引用 s[2],s[1:8:2]
字符串是一种tuple