列表
本節繼續討論列表不同元組和字串的地方:列表是可變的(mutable)----可以改變列表的內容,並且列表有很多有用的、專門的方法。
List函數可以將一個字串拆分成列表。
>>> list('chongshi')['c', 'h', 'o', 'n', 'g', 's', 'h', 'i']
改變列表:元素賦值
例如,我們想對一個列表中的某個元素賦值。
>>> x =[1,2,3,4]>>> x[2]=18>>> x[1, 2, 18, 4]
刪除元素
從列表中刪除元素也很容易,使用dele語句來實現。
>>> names = ['zhangsan','lisi','wangwu','sunliu']>>> del names[2]>>> names['zhangsan', 'lisi', 'sunliu']
分區賦值:
>>> name = list('huzi')>>> name['h', 'u', 'z', 'i']>>> name[2:]=list('dazhi')>>> name['h', 'u', 'd', 'a', 'z', 'h', 'i']
name的內容為“huzi” ,從第3個字元(2)開始替換,用“da”替換“zi”並被擴容“zhi”,所以新的name的內容為“hudazhi”。
列表方法
方法是一個與某些對象有緊密聯絡的函數,對象可能是列表、數字,也可能是字串或者其他類型的對象,一般來說,方法可以這樣進行調用:
對象.方法(參數)
方法調用與函數調用很類似。
1、append
append方法用於在列表末尾追加新的對象:
>>> abc = [1,2,3]>>> abc.append(4)>>> abc[1, 2, 3, 4]
2、count
count方法統計某個元素在列表中出現的次數:
>>> ['to','be','or','not','to','be',].count('to')2>>> x = [[1,2],1,1,[2,1,[1,2]]]>>> x.count(1)2>>> x.count([1,2])1
3、extend
extend方法可以在列表的末尾一次性追加另一個序列中的多個值。用新列表擴充原有列表:
>>> a = [1,2,3]>>> b = [4,5,6]>>> a.extend(b)>>> a[1, 2, 3, 4, 5, 6]
4、index
index 方法用於從列表中找出某個值第一個匹配項的。
>>> knights = ['We','are','the','kninghts','who','say','ni']>>> knights.index('who')4>>> knights[4]'who'
5、insert
insert 方法用於將對象插入到列表中:
>>> numbers = [1,2,3,5,6,7]>>> numbers.insert(3,'four')>>> numbers[1, 2, 3, 'four', 5, 6, 7]
6、pop
pop 方法會移除列表中一個元素(預設是最後一個),並且返回該元素的值:
>>> x = [1,2,3]>>> x.pop()3>>> x[1, 2]>>> x.pop(0)1>>> x[2]
7、remove
remove 方法用於移除列表中某個值的第一個匹配項:
>>> x = ['to','be','or','not','to','be']>>> x.remove('be')>>> x['to', 'or', 'not', 'to', 'be']
8、reverse
revers方法將列表中的元素反向存放
>>> x = [1,2,3]>>> x.reverse()>>> x[3, 2, 1]
9、sort
sort方法用於在原位置對列表進行排序。在“原位置排序”改變原來的列表,從而讓其中的元素能按一定的順序排列。
>>> x = [4,6,2,1,7,9]>>> x.sort()>>> x[1, 2, 4, 6, 7, 9]
元組:不可變序列
元組與列表一樣,也是一種序列。唯一的不同是元組不能改變。建立元組的文法很簡單:如果你用逗號分割了一些值,那麼你就自動建立了元組。
>>> 1,2,3(1, 2, 3)>>> (1,2,3) # 用括弧表示元組(1, 2, 3)>>> () # 空元組()
如何?包含一個值的元組呢?方法有點奇特----必須加逗號,即使只有一個值:
>>> 42,(42,)>>> (42,)(42,)>>> 3 * (20+1)63>>> 3 * (20+1,)(21, 21, 21)
tuple 函數
tuple函數的功能與list函數基本上一樣:以一個序列作為參數並把它轉換為元組。
>>> tuple([1,2,3])(1, 2, 3)>>> tuple('abc')('a', 'b', 'c')>>> tuple((1,2,3))(1, 2, 3)