sequence 序列

sequence(序列)是一组有顺序的对象的集合。序列可以包含一个或多个元素,也可以没有任何元素。

我们之前所说的基本数据类型,都可以作为序列的对象。对象还可以是另一个序列。序列有两种:list (表) 和 tuple(元组) 。
list和tuple的主要区别在于,一旦建立,tuple的各个元素不可再变更,而list的各个元素可以再变更。

List

获得list元素的个数:



复制代码 代码如下:



>>> lst=['更新慢','python',5.44,False] 
  
 >>> len(lst) 
  
 4


引用访问时索引是从0开始,注意不要越界:



复制代码 代码如下:



>>> lst[0] 
  
 '更新慢' 
  
 >>> lst[1] 
  
 'python' 
  
 >>> lst[2] 
  
 5.44 
  
 >>> lst[3] 
  
 False 
  
 >>> lst[4] 
  
 Traceback (most recent call last): 
  
   
   File "", line 1, in 
  
   
    
    
   lst[4] 
  
 IndexError: list index out of range



用-1做索引,直接获取最后一个元素:



复制代码 代码如下:



>>> lst[-1] 
  
 False 
  
 >>> lst[-2] 
  
 5.44 
  
 >>> lst[-3] 
  
 'python' 
  
 >>> lst[-4] 
  
 '更新慢' 
  
 >>> lst[-5] 
  
 Traceback (most recent call last): 
  
   
   File "", line 1, in 
  
   
    
    
   lst[-5] 
  
 IndexError: list index out of range



因为list是一个可变的有序表,所以,可以往list末尾追加元素:



复制代码 代码如下:



>>> lst.append('加我一个') 
  
 >>> lst 
  
 ['更新慢', 'python', 5.44, False, '加我一个']


一次追加多个元素:



复制代码 代码如下:



>>> lst.extend(['A','B','C']) 
  
 >>> lst 
  
 ['更新慢', 'python', 5.44, False, '加我一个', 'A', 'B', 'C']

要删除list末尾的元素,用pop()方法:



复制代码 代码如下:




>>> lst.pop() 
  
 'C' 
  
 >>> lst 
  
 ['更新慢', 'python', 5.44, False, '加我一个', 'A', 'B']


删除指定位置的元素,用pop(i)方法,其中i是索引位置:



复制代码 代码如下:



>>> lst.pop(0) 
  
 '更新慢' 
  
 >>> lst 
  
 ['python', 5.44, False, '加我一个', 'A']


list元素替换,可以直接赋值给对应的索引位置:



复制代码 代码如下:




>>> lst[-1]='100' 
  
 >>> lst 
  
 ['python', 5.44, False, '加我一个', '100']


list元素也可以是另一个list,插入的那个list只算一个元素:



复制代码 代码如下:



>>> lst.append(lst1) 
  
 >>> lst 
  
 ['python', 5.44, False, '加我一个', '100', ['666', 'QWER']] 
  
 >>> len(lst) 
  
 6



Tuple

Tuple一旦初始化就不能修改。字符串是一种特殊的元素,因此可以执行元组的相关操作。



复制代码 代码如下:



>>> str='该睡觉了,晚安!' 
  
 >>> print (str[:7]) 
  
 该睡觉了,晚安

不可变的tuple意义就在于因为不可变,所以代码更安全。如果可能,能用tuple就尽量用tuple。



复制代码 代码如下:



>>> tuple=('1','2','3') 
  
 >>> tuple[0]=6 
  
 Traceback (most recent call last): 
  
   
   File "", line 1, in 
  
   
    
    
   tuple[0]=6 
  
 TypeError: 'tuple' object does not support item assignment


定义一个空tuple:



复制代码 代码如下:




>>> tuple1=() 
  
 >>> tuple1 
  
 ()


注意,要定义一个只有1个元素的tuple:


复制代码 代码如下:




>>> tuple2=(666,) 
  
 >>> tuple2 
  
 (666,)  
    
    
    
    
    
    
    
    
    
    
    
    
   #正确的 
  
 >>> tuple3=(666) 
  
 >>> tuple3 
  
 666  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
   #错误的,只定义了666这个数


注意:Tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。



复制代码 代码如下:



>>> l=['CCTV-5','HI'] 
  
 >>> tuple4=('UFO','HACK',l) 
  
 >>> tuple4 
  
 ('UFO', 'HACK', ['CCTV-5', 'HI']) 
  
 >>> l[1]='我先变一下' 
  
 >>> tuple4 
  
 ('UFO', 'HACK', ['CCTV-5', '我先变一下'])


所以尽量避免这种套用