1. 基本對象類型(python里面一切皆是對象)
(接前文)
1.5.4 列表相關方法/函數
1.5.4.1 len() 返回列表元素個數。
>>>citys = ['beijing', 'shanghai', 'shenzhen','tianjin']
>>>len(citys)? #返回4
1.5.4.2 append() 列表末尾添加新的對象。
該方法沒有返回值
示例:
>>>citys = ['beijing', 'shanghai', 'shenzhen']
>>>citys.append('tianjin')
1.5.4.3 insert() 將指定對象插入列表的指定位置。
語法:list.insert(index, obj)
參數:
index -- 對象obj需要插入的索引位置。
obj -- 要插入列表中的對象。
示例:
>>>list1 = ['Google', 'Runoob', 'Taobao']
>>>list1.insert(1, 'Baidu')
>>>list1? #輸出['Google', 'Baidu', 'Runoob', 'Taobao']
1.5.4.4 extend() 在列表末尾一次性追加另一個序列中的多個值
用新列表擴展原來的列表。
示例:
>>>list1 = ['Google', 'Runoob', 'Taobao']
>>>list2=list(range(5)) # 創(chuàng)建 0-4 的列表
>>>list1.extend(list2)? # 擴展列表
>>>list1 #返回 ['Google', 'Runoob', 'Taobao', 0, 1, 2, 3, 4]
1.5.4.5 提示性補充append和extend區(qū)別
appcend是在列表最后面追加一個元素
extend是在A列表最后面追加一個B列表,對A列表拓展。
? 示例(添加的元素為列表/元組時)):
>>> citys1 = ['beijing', 'shanghai', 'shenzhen']
>>> citys2 = ['tianjing', 'shanghai']
>>> citys1.append(citys2)
>>> citys1 #append方法將citys2列表整體作為一個元素追加到citys1中
輸出 ['beijing', 'shanghai', 'shenzhen', ['tianjing', 'shanghai']]? 注意:作為元素追加的子列表['tianjing', 'shanghai'],在citys1中存放的仍是引用,而不是具體數據,修改了citys2,citys1也會同時變。
>>> citys1 = ['beijing', 'shanghai', 'shenzhen']
>>> citys2 = ['tianjing', 'shanghai']
>>> citys1.extend(citys2)
>>> citys1 #extend方法將citys2列表中的元素作為元素追加到citys1中
輸入 ['beijing', 'shanghai', 'shenzhen', 'tianjing', 'shanghai']
? 示例(添加的元素為字符串,)
>>> aList = [1,2,3]
>>> b = 'abc'
>>> aList.append(b)
>>> aList
輸出: [1, 2, 3, 'abc']
>>> aList = [1,2,3]
>>> b = 'abc'
>>> aList.extend(b)
>>> aList #注意:extend會將字符串中的每個字符當做一個元素,將字符串看成由一個個字符組成的列表。
輸出:[1, 2, 3, 'a', 'b', 'c']
? 示例(添加的元素為數 值類型)
>>> aList = [1,2,3]
>>> b = 456
>>> aList.append(b)
>>> aList
輸出:[1, 2, 3, 456]
>>> aList = [1,2,3]
>>> b = 456
>>> aList.extend(b)
Traceback (most recent call last):
? File "<pyshell>", line 1, in <module>
TypeError: 'int' object is not iterable
報錯,提示int類型不是iterable。iterable后續(xù)章節(jié)詳細說明
1.5.4.6 del 刪除元素或整個列表
刪除指定列表索引的元素。可以切片形式指定待刪除的元素。
示例:
>>> list1 = ['Google', 'Runoob', 'Taobao']
>>> del list1[1]? #刪除索引為1的元素,即'Runoob'
>>> list1 #輸出 ['Google', 'Taobao']
>>> list1=['Google', 'Runoob', 'Taobao']
>>> del list1[:2] #刪除前面2個元素
>>> list1 #輸出['Taobao']
>>> list1=['Google', 'Runoob', 'Taobao']
>>> del list1[:] #清空列表,類似list1.clear()方法
注意:del命令可以刪除整個對象。示例:
>>> list1=['Google', 'Runoob', 'Taobao']
>>> del list1
>>> list1 #拋出異常,list1已經不存在了
1.5.4.7 pop() 移除列表中的某元素(默認最后一個元素),并且返回該元素的值。
語法:list.pop([index=-1])
參數:
index -- 可選參數,要移除列表元素的索引值,不能超過列表總長度,默認為 index=-1,刪除最后一個列表值。
返回值該方法返回從列表中移除的元素對象。
示例:
>>>list1 = ['Google', 'Runoob', 'Taobao']
>>>list1.pop() #移除最后一個
>>>list1.pop(1) #移除下標為1的對象
1.5.4.8 remove() 移除列表中某個值的第一個匹配項。
示例:
>>>list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
>>>list1.remove('Taobao')? #只移除第一個
1.5.4.9 clear() 函數用于清空列表
類似于 del a[:]。
示例:
>>>aList = ['Goo', 'Tao','Run', 'Face']
>>>aList.clear()
>>>aList #輸出[],空列表
>>>aList = ['Goo',? 'Tao','Run', 'Face']
>>>del aList[:] #與aList.clear()等效
>>>aList? #輸出[],空列表
--copy() 函數用于復制列表
語法:list.copy()
修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。(字符串則不可以)
示例:
>>> citys = ['beijing', 'shanghai', 'shenzhen','tianjin']
>>> city[2] = 'guangzhou'
>>> citys[2] = 'guangzhou'
>>> citys #輸出 ['beijing', 'shanghai', 'guangzhou', 'tianjin']
1.5.4.10 index() 列表中找出某個值第一個匹配項的索引位置。
語法
list.index(x[, start[, end]])
參數
x-- 查找的對象。
start-- 可選,查找的起始位置。
end-- 可選,查找的結束位置。
返回值查找對象的索引位置,如果沒有找到對象則拋出異常。
示例:
>>>list1 = ['Google', 'Runoob', 'Taobao']
>>>index('Runoob') #返回1
>>>list1.index('Runoob',1,3)) #返回1
1.5.4.11 reverse() 函數用于反向列表中元素。
示例:
>>> list1 = ['Google', 'Runoob', 'Taobao']
>>> list1.reverse()
>>> list1 輸出['Taobao', 'Runoob', 'Google']
說明:用切片反轉同樣可以達到效果,但列表值不會變,reverse方法反轉,列表值會改變(內存地址不變)。
>>> list1 = ['Google', 'Runoob', 'Taobao']
>>> list1[::-1] 輸出['Taobao', 'Runoob', 'Google']
1.5.4.12 sort()? 對列表永久性排序
語法:list.sort( key=None, reverse=False)
key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自于可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse -- 排序規(guī)則,reverse = True 降序, reverse = False 升序(默認)。
示例:
>>>aList = ['Goo', 'Tao','Run', 'Face']
>>>aList.sort() #默認升序
>>>aList #輸出['Face', 'Goo', 'Run', 'Tao'],字符串排序按第一個字母來,第一個字母相同按第二個
>>>aList.sort(reverse=True)? #降序
>>>aList? #輸出['Tao', 'Run', 'Goo', 'Face']
# 獲取列表的第二個元素,定義迭代函數
>>>def takeSecond(elem):
? ? return elem[1]
>>>random = [('Goo',3), ('Tao',2),('Run',1), ('Face',4)]
>>>random.sort(key=takeSecond) # 指定第二個元素排序
>>>random? #輸出[('Run', 1), ('Tao', 2), ('Goo', 3), ('Face', 4)]
1.5.4.13 sorted() 對列表進行臨時排序
sorted() 函數對所有可迭代的對象(包括list)進行排序操作。
? sort 與 sorted 區(qū)別:
a)sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。
b)list 的 sort 方法返回的是對已經存在的列表進行操作,改變已存在列表值,方法無返回值,而sorted 方法返回的是一個新的 list,不改變元對象的值
? sorted 語法:
sorted(iterable, cmp=None, key=None, reverse=False)
參數說明:
iterable -- 可迭代對象。
cmp -- 比較的函數,這個具有兩個參數,參數的值都是從可迭代對象中取出,此函數必須遵守的規(guī)則為,大于則返回1,小于則返回-1,等于則返回0。
key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自于可迭代對象中,指定可迭代對象中的一個元素來進行排序。
reverse -- 排序規(guī)則,reverse = True 降序 , reverse = False 升序(默認)。
返回值:返回重新排序的列表。
示例:
>>>a = [5,7,6,3,4,1,2]
>>> b = sorted(a)
>>> a #輸出[5, 7, 6, 3, 4, 1, 2],原列表不變
>>> b #[1, 2, 3, 4, 5, 6, 7],排序后的新列表
>>>list1=[('g',2),('a',9),('c',3),('d',4)]
>>> sorted(list1, key=lambda x:x[1])?
#利用key對元素的第二個子元素升序,輸出 [('g', 2), ('c', 3), ('d', 4), ('a', 9)]
>>>sorted(list1, key=lambda x:x[0],reverse=True)?
#利用key對元素的第一個子元素降序,輸出[('g', 2), ('d', 4), ('c', 3), ('a', 9)]
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(students, key=lambda s: s[2], reverse=True)
#按對元素的第三個子元素(年齡)降序,輸出[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>>list1=[('g',2),('a',9),('c',3),('d',4)]
>>> sorted(list1, cmp=lambda x,y:cmp(x[1],y[1]))? # 利用cmp函數 教程中示例語法錯誤,無法執(zhí)行
1.5.4.14 count() 統(tǒng)計某個元素在列表中出現的次數。
示例:
>>>citys = ['beijing', 'shanghai', 'shenzhen','beijing']
>>>citys.count('beijing')? #輸出2
>>>citys.count('bei')? #輸出0
1.5.4.15 list() 將元組或字符串轉換為列表。
類型轉換函數。若是字符串,則會將每個字符作為一個元素。
格式:lis(序列)
示例:
>>> str='abc123'
>>> list(str) #輸出['a', 'b', 'c', '1', '2', '3']
>>> tuple1=('shanghai','bejing','tianjing')
>>> list(tuple1) #輸出['shanghai', 'bejing', 'tianjing']