序列的資料結構:目錄

  • 序列的資料結構
    • LIFO
    • FIFO
  • 比較資料結構
    • 串列 v.s. Tuple v.s. 字典
  • 製作更大的資料結構
    • 串列 → Tuple(將每一個串列當成元素)
    • 串列 → 串列的串列
    • 串列 → 字典
  • 唯一的限制就是這些資料類型本身

序列的資料結構

當你想要收集被傳進來的資料,並且想要先使用最舊的(FIFO),或最新的(LIFO)時,可善用他們

LIFO

  • LIFO 序列的資料結構(後進先出)
  • 使用 append()新項目附加到結尾,並用 pop()同一個結尾移除,代表你正在實作一種稱為 LIFO 序列的資料結構(後進先出)

後進

  1. 串列名稱 = ['字串1', '字串2', '字串3']
  2. 串列名稱.append('字串4')
  3. 串列名稱
  4. ['字串1', '字串2', '字串3', '字串4']
>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> marxes.append('Zeppo')
>>> marxes
['Groucho', 'Chico', 'Harpo', 'Zeppo']
>>>

先出

  1. 串列名稱 = ['字串1', '字串2', '字串3', '字串4']
  2. 串列名稱.pop()
  3. 串列名稱.pop(-1)
  4. '字串4'
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']

>>> marxes.pop()
'Zeppo'
>>> marxes
['Groucho', 'Chico', 'Harpo']
>>> marxes = ['Groucho', 'Chico', 'Harpo', 'Zeppo']

>>> marxes.pop(-1)
'Zeppo'
>>> marxes
['Groucho', 'Chico', 'Harpo']

FIFO

  • FIFO 序列的資料結構(先進先出)
  • stack.pop(0) 會建立一個所謂的 FIFO(先進先出)序列

比較資料結構

串列:使用 [] 製作 Tuple:使用 , 製作 字典:使用 {} 製作

  • 各種情況下,都可以用 [ ] 來存取單一元素
    • 串列、Tuple:[整數位移植](對串列與Tuple而言,方括號內的值是整數位移植)
    • 字典:[鍵](對字典而言,方括號內的值是鍵)
    • 對這三者而言:結果都是值

串列 v.s. Tuple v.s. 字典

串列名稱 = ['字串1', '字串2', '字串3'] tuple名稱 = '字串1', '字串2', '字串3' 字典名稱 = {'鍵1':'值1', '鍵2':'值2', '鍵3':'值3'}

  • 串列名稱[2] → '字串3'
  • tuple名稱[2] → '字串3'
  • 字典名稱['鍵3'] → '值3'
>>> marx_list = ['Groucho', 'Chico', 'Harpo']
>>> marx_tuple = 'Groucho', 'Chico', 'Harpo'
>>> marx_dict = {'Groucho': 'banjo', 'Chico': 'piano', 'Harpo': 'harpo'}

>>> marx_list[2]
'Harpo'
>>> marx_tuple[2]
'Harpo'
>>> marx_dict['Harpo']
'harpo'

製作更大的資料結構

已經用過簡單的布林、數字、字串、串列、tuple、集合、字典。你可以將這些內建的資料結構結合成更大型、複雜的個人專屬結構。

串列名稱1 = ['字串1', '字串2', '字串3'] 串列名稱2 = ['字串4', '字串5', '字串6', '字串7', '字串8'] 串列名稱3 = ['字串9', '字串10', '字串11']

>>> marxes = ['Groucho', 'Chico', 'Harpo']
>>> pythons = ['Chapman', 'Cleese', 'Gilliam', 'Jones', 'Palin']
>>> stooges = ['Moe', 'Curly', 'Larry']

串列 → Tuple(將每一個串列當成元素)

  1. tuple 名稱 = 串列名稱1, 串列名稱2, 串列名稱3
  2. tuple 名稱
  3. (['字串1', '字串2', '字串3'], ['字串4', '字串5', '字串6', '字串7', '字串8'], ['字串9', '字串10', '字串11'])
>>> tuple_of_lists = marxes, pythons, stooges
>>> tuple_of_lists
(['Groucho', 'Chico', 'Harpo'], ['Chapman', 'Cleese', 'Gilliam', 'Jones', 'Palin'], ['Moe', 'Curly', 'Larry'])

串列 → 串列的串列

  1. 串列名稱 all = [串列名稱1, 串列名稱2, 串列名稱3]
  2. 串列名稱 all
  3. [['字串1', '字串2', '字串3'], ['字串4', '字串5', '字串6', '字串7', '字串8'], ['字串9', '字串10', '字串11']]
>>> list_of_lists = [marxes, pythons, stooges]
>>> list_of_lists
[['Groucho', 'Chico', 'Harpo'], ['Chapman', 'Cleese', 'Gilliam', 'Jones', 'Palin'], ['Moe', 'Curly', 'Larry']]

串列 → 字典

  1. 字典名稱 = {'鍵1':串列名稱1, '鍵2':串列名稱2, '鍵3':串列名稱3}
  2. 字典名稱
  3. {'鍵1': ['字串1', '字串2', '字串3'],
    '鍵2': ['字串4', '字串5', '字串6', '字串7', '字串8'],
    '鍵3': ['字串9', '字串10', '字串11'],
    }
>>> dict_of_lists = {'Marxes': marxes, 'Pythons': pythons, 'Stooges': stooges}
>>> dict_of_lists
{'Marxes': ['Groucho', 'Chico', 'Harpo'], 'Pythons': ['Chapman', 'Cleese', 'Gilliam', 'Jones', 'Palin'], 'Stooges': ['Moe', 'Curly', 'Larry']}

唯一的限制就是這些資料類型本身

  • 字典鍵是不可變的,所以不能將串列、字典、集合當成其他字典的鍵。但是 Tuple 可以
  • 例如:可以用 GPS 座標來指引地圖,經緯度與高度(更多的地圖範例,請見本書 p387 "地圖"
>>> 字典名稱 = {
        (tuple鍵1, tuple鍵2, tuple鍵3): '值1',
        (tuple鍵4, tuple鍵5, tuple鍵6): '值2'
        }
houses = {
    (44.79, -93.14, 285): 'My House',
    (38.89, -77.03, 13): 'The White House'
    }

results matching ""

    No results matching ""