python--數據結構
阿新 • • 發佈:2017-07-27
else list 技術分享 -- pop instance ins 引入 add
List方法
append(element)
li1 = ["hello", "fftu", 99]; li1.append("verb"); print(li1); #[‘hello‘, ‘fftu‘, 99, ‘verb‘]
li1 = ["hello", "fftu", 99]; li2 = ["adv", "pron", "adj"]; li1.append(li2); print(li1); #[‘hello‘, ‘fftu‘, 99, [‘adv‘, ‘pron‘, ‘adj‘]]
可以看出:不管被添加的什麽數據類型,append()方法都會將其作為List的最後一個元素進行填充。
extend(element)
li1 = ["hello", "fftu", 99]; li2 = ["adv", "pron", "adj"]; # li1.extend(li2); li1 += li2; print(li1); [‘hello‘, ‘fftu‘, 99, ‘adv‘, ‘pron‘, ‘adj‘]
中間兩句是等價的
insert(i, element)
i是元素將要占據的索引
li1 = ["hello", "fftu", 99]; li2 = ["adv", "pron", "adj"]; li1.insert(1, li2); print(li1); #[‘hello‘, [‘adv‘, ‘pron‘, ‘adj‘], ‘fftu‘, 99]
remove(element)
li1 = ["hello", "fftu", 99]; li2 = ["adv", "pron", "adj"]; li1.remove("hello"); print(li1); #[‘fftu‘, 99]
pop(i)
li1 = ["hello", "fftu", 99]; li2 = ["adv", "pron", "adj"]; li1.pop(1); print(li1); #[‘hello‘, 99]
如果不傳遞參數i,默認刪除最後一個元素。
這個函數有返回值,返回值為被刪除的元素
clear()
移除列表所有元素,變成空List
index(element)
li1 = ["hello", "fftu", 99]; li2 = ["adv", "pron", "adj"]; print(li1.index(99)); #2
count(element)
li1 = ["hello", "fftu", 99, "fftu"]; li2 = ["adv", "pron", "adj"]; print(li1.count("fftu")); #2
將列表當做堆棧使用
堆棧作為特定的數據結構,特性是“後進先出”
append()將元素壓入堆棧頂
pop()從堆棧頂部取出(刪除元素)
將列表作為隊列使用
貌似得引入queue,不會
列表推導式
通常應用程序將一些操作應用於某個序列的每個元素,用其獲得的結果作為生成新列表的元素,或者根據確定的判定條件創建子序列。
實例:列表元素*3生成新列表
li1 = [1, 5, 10]; result = [(3 * element) for element in li1]; print(result); #[3, 15, 30]
修改上面的代碼
li1 = [1, 5, 10]; result = [[element, 3 * element] for element in li1]; print(result); #[[1, 3], [5, 15], [10, 30]]
使用函數格式化List元素,生成新List
li1 = [1, 5, 10]; def addWords(element): return "未修改前的數字是:" + str(element); result = [[addWords(element), 3 * element] for element in li1]; print(result); #[[‘未修改前的數字是:1‘, 3], [‘未修改前的數字是:5‘, 15], [‘未修改前的數字是:10‘, 30]]
if作為過濾器
我覺得過濾應該寫在推導式的外層
涉及到兩個List
li1 = [1, 5, 10]; li2 = [2, 6, 9]; result = [(li1Element * li2Element) for li1Element in li1 for li2Element in li2]; print(result); #[2, 6, 9, 10, 30, 45, 20, 60, 90]
列表轉換
其實就是重排矩陣,用得上再重新看一下
字典
dict1 = {"name": "jiao", "age": 25}; def insertWords(value): if(isinstance(value, int)): return ("now you are " + str(value)); if(isinstance(value, str)): return ("hello " + value); result = {str(key): insertWords(dict1[key]) for key in dict1}; print(result); #{‘name‘: ‘hello jiao‘, ‘age‘: ‘now you are 25‘}
遍歷技巧
在字典中遍歷時,關鍵字和對應的值可以使用 items() 方法同時解讀出來
dict1 = {"name": "jiao", "age": 25}; for key, value in dict1.items(): if(isinstance(value, int)): print(key + str(value)); else: print(key + value); #namejiao #age25
在序列中遍歷時,索引位置和對應值可以使用 enumerate() 函數同時得到
li1 = ["helo", "fftu", 22]; for index, value in enumerate(li1): print(str(index) + ":" + str(value)); # 0:helo # 1:fftu # 2:22
~END
python--數據結構