列表html
列表的使用:
python
列表是可變數據類型,所以列表的方法,都是直接修改列表原始值shell
list = ["panda","chimpanzee","zebra","lion","cat"]app
(1)經過下標訪問列表中的元素,下標從0開始計數ide
1 >>> list[0] 2 'panda' 3 >>> list[2] 4 'zebra' 5 >>> list[-1] 倒着訪問,下標從【-1】開始 6 'cat' 7 >>> list[-5] 8 'panda'
(2)切片 list = ["panda","chimpanzee","zebra","lion","cat"]函數
1 >>> list[1:4] 2 ['chimpanzee', 'zebra', 'lion'] #顧頭不顧尾 3 >>> list[1:-1] 4 ['chimpanzee', 'zebra', 'lion'] #顧頭不顧尾,下標【1】爲'chimpanzee',【-1】爲從右邊數第一個 5 >>> list[0:3] 6 ['panda', 'chimpanzee', 'zebra'] #0表示從第一個開始取 7 >>> list[:3] 8 ['panda', 'chimpanzee', 'zebra'] #從第一個開始取也能夠爲空表示 9 >>> list[3:] 10 ['lion', 'cat'] #從下標【3】取到最後一個,包括最後一個 11 >>> list[3:-1] 12 ['lion'] 13 >>> list[0::2] 14 ['panda', 'zebra', 'cat'] #此處的2表示,每隔一個元素,取一個 15 >>> list[::2] 16 ['panda', 'zebra', 'cat'] 17 >>> list[2:2] ------ [] #此處取值爲空
list[:] 對list所有切片,能夠起到複製的做用,同時 list[:]也可使用list全部的方法
(2)列表的經常使用操做spa
追加:append()加到列表最尾code
1 >>> zoo 2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone'] 3 >>> zoo.append("追加") 4 >>> zoo 5 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加'] 6 >>>
插入: 想插入哪裏,下標就寫哪裏htm
1 zoo 2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加'] 3 >>> zoo.insert(1,"從chimpanz前插入") 4 >>> zoo 5 ['panda', '從chimpanz前插入', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加'] 6 >>> zoo.insert(4,"從lion前插入") 7 >>> zoo 8 ['panda', '從chimpanz前插入', 'chimpanzee', 'zebra', '從lion前插入', 'lion', 'cat', 'newone', '追加'] 9 >>>
修改:blog
1 >>> zoo 2 ['panda', '從chimpanz前插入', 'chimpanzee', 'zebra', '從lion前插入', 'lion', 'cat', 'newone', '追加'] 3 >>> zoo[1]="換成gorilla" 4 >>> zoo 5 ['panda', '換成gorilla', 'chimpanzee', 'zebra', '從lion前插入', 'lion', 'cat', 'newone', '追加'] 6 >>>
刪除:(有三種刪除方式 del ,remove【刪除指定元素,若是有多個,取列表的第一個匹配項】,pop【若是不輸入下標,默認刪除最後一個】)
1 >>> del zoo[1] 2 >>> zoo 3 ['panda', 'chimpanzee', 'zebra', '從lion前插入', 'lion', 'cat', 'newone', '追加'] 4 >>> zoo.remove("從lion前插入") 5 >>> zoo 6 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加'] 7 >>> zoo.pop() #刪除列表最後一個值 8 '追加' 9 >>> zoo 10 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone'] 11 >>>
#pop雖然是刪除,不過會獲取每個被刪除的元素,list2.append(list.pop()) ,從而達到list刪除,list2增長的目的
擴展:
1 >>> zoo 2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone'] 3 >>> b=[1,2,3] 4 >>> zoo.extend(b) 5 >>> zoo 6 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3] 7 >>>
統計:
1 >>> zoo 2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3] 3 >>> zoo.count("newone") #統計列表中有多少個【newone】 4 1 5 >>>
排序和反轉: 其中排序是按照ASCII碼順序進行排序
1 >>> zoo.sort() 2 Traceback (most recent call last): #python3中 int和str不能排序 3 File "<pyshell#45>", line 1, in <module> 4 zoo.sort() 5 TypeError: '<' not supported between instances of 'int' and 'str' 6 >>> zoo[-1]="3" #修改 7 >>> zoo[-2]="2" 8 >>> zoo[-3]="1" 9 >>> zoo 10 ['cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra', '1', '2', '3'] 11 >>> zoo.sort() #排序 12 >>> zoo 13 ['1', '2', '3', 'cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra'] 14 >>> zoo.reverse() #反轉 15 >>> zoo 16 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '3', '2', '1'] 17 >>>
""" 有一個列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重而且保持原來的順序. """ l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3] ret = list(set(l1)) print(ret) ret.sort(key=l1.index) # 按值在l1中的索引進行排序 print(ret) l2 = [ {"name": "alex", "age": 36}, {"name": "GoldBoss", "age": 30}, {"name": "xiaoyima", "age": 18} ] # 課後做業 l2.sort(key=lambda x: x["age"]) print(l2)
獲取下標:
1 >>> zoo 2 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '3', '2', '1'] 3 >>> zoo.index("panda") 4 1 5 >>>
清空:
zoo.clear() #清空列表
複製:淺copy
1 >>> zoo2222 = zoo.copy() #複製 2 >>> zoo2222 3 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat'] 4 >>> zoo[0]="dog" 5 >>> zoo 6 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat'] 7 >>> zoo2222 8 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat'] 9 >>> 10 11 此時修改了zoo的一個元素,zoo2222不會一塊兒改 12 但這只是淺copy,只複製了第一層 13 14 當zoo的元素中包含了列表,修改改聊表中的值,zoo2也會一塊兒修改 15 >>> zoo 16 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']] 17 >>> zoo2 = zoo.copy() 18 >>> zoo2 19 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']] 20 >>> zoo[6][0]="PETER" 21 >>> zoo2 22 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['PETER', 'tony']] 23 >>> 24 25 另外: 26 list = list2 27 此時與 str = str2 不一樣, 28 此時的list至關於只向list2的內存地址,list2修改,list也會跟着一塊兒修改
若要進行深copy:copy模塊中copy仍是淺copy,deep copy纔是深copy
1 1 import copy 2 2 zoo3 = copy.deepcopy(zoo) 3 3 #此時修改zoo,無論zoo中是否包含列表,zoo3都不會影響。
小結,列表用到的函數有:append,insert,extend,pop,remove,clear,index,count,reverse,sort,copy
元組(tuple)
只可查列表,只能查
可用函數只有 count,index
http://www.runoob.com/python3/python3-tuple.html
>>> a = (1,2,3) >>> b = (5,6,7) >>> a+b (1, 2, 3, 5, 6, 7) >>> c = (5,6,8) >>> b+c (5, 6, 7, 5, 6, 8) >>>