Collection

集合物件

四大集合物件:list、tuple、set、dict

List串列

有順序、可重複、可瀏覽、可修改、可以有不同形態。

List的建立:使用中括號[ ]、或型態函數 list()

一維

num = [1,2,3,4,5,6,7,8,9,10]

str = ['Tom','John','Mary']

ff = [88.8, 77.7, 66.6, 55.5]

mix = [1, 'Allen', 98.5]

List方法 

A = [1, 2, 'a', 'b']

新增、A.append('d')→[1, 2, 'a', 'b', 'd']

刪除、A.remove('a')→[1, 2, 'b', 'd']

修改、A[0] = 100→[100, 2, 'b', 'd']

排序、A.sort(reverse=True)→['d', 'b', 100, 2] 遞減

查詢(擷取)、A[2]→100、A[1:]→ ['b', 100, 2]

student = ['Tom', 'nick', 'Emily', 'albert']

c = student.count('nick') #符合的元素個數,c=1

idx = student.index('albert') #元素所處位置(從0開始)idx=3

新增list元素

append(e)

extend(list)

insert(i, e)

insert(i, list)

範例:

students = ['nick', 'albert', 'jie']

st = ['jason', 'allen']

students.append('lisa') #後加

students.extend(st) #擴充

students.insert(0, 'maggie') #插入位置0,原資料往後移

students.insert(1, st) #也可以插入list

修改元素

data[index] = new_value

刪除

remove(e):移除第一個e,若沒有e則產生例外。

pop():回傳並移除最後一個。

pop(index):回傳並移除index的元素。

# 刪

students = ['nick', 'albert', 'jie']

students0 = students.copy()

students.remove('nick') # 移除第⼀個名為nick的元素

students = students0.copy()

st = students.pop() # 取出最後的元素

students = students0.copy()

st = students.pop(0) # 取出第⼀個元素

del students[0]

常用函數

len(List) #元素個數

max(List) #取得最大元素值

List2 = sorted(List1) #回傳排序後結果給List2,List1不變。

排序

data.sort() #遞增排序

data.sort(reverse=True) #遞減排序

sort() : 會改變List

sorted() : 回傳排序後List,原List不改變。

import random

random.shuffle(List) #隨機打亂


*一維串列:輸出串列每個元素,中間以空白隔開,且最後一個元素之後無空白。

A = [1, 2, 'a', 'b']

print(*A)

輸出

1 2 a b

二維

arr = [[1,2,3],[4,5,6],[7,8,9,10]]

走訪一、手動計算,容易遺漏或失誤。(此例會少一個10)

for i in range(3):

  for j in range(3):

    print(a[i][j],end=' ')

  print()

輸出:

1 2 3 

4 5 6 

7 8 9 

走訪二、計算長度,使用兩個索引,傳統方式。

for i in range(len(arr)):

  b = arr[i]

  for j in range(len(b)):

    print(arr[i][j],end=' ')

  print()

輸出:

1 2 3 

4 5 6 

7 8 9 10 

走訪三、使用數列,方便性更高。

for i in arr:

  for j in i:

    print(j,end=' ')

  print()

輸出:

1 2 3 

4 5 6 

7 8 9 10 

走訪四、使用符號*、只需一層迴圈,極為便利。

*:讀取串列內的個別元素輸出,中間隔一個空白。

for i in arr:

  print(*i)

輸出:每一列最後的數字後無空白

1 2 3

4 5 6

7 8 9 10