1. 程式人生 > >python--數據結構

python--數據結構

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--數據結構