iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
Odoo

30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用系列 第 4

【Day04】演唱會門票的候補名單要怎麼表示? 那放棄和排候補呢?:有順序的序列 (串列 list)

  • 分享至 

  • xImage
  •  

使用 list (串列) 能很好的表示這個情境,waiting_list = ["Alice", "Bob", "Charlie", "David"],,今天 “Bob” 要退出,那麼 waiting_list 就會變成 ["Alice", "Charlie", "David"],Ian 要排隊,waiting_list 就變成 ["Alice", "Charlie", "David", “Ian”],這也是為什麼我們要學更多資料型態,這樣能更好模擬更多問題,下面將繼續介紹串列 (list)。


文章架構

  • 概觀看一下,群集類別的資料型態,但只介紹 串列 (list) 和 元組 (tuple)
  • 關於 串列 (list) 的創造、存取及修改
  • 針對串列行為的方法 (method),添加、插入、刪除 …

概觀看一下,群集類別的資料型態,但只介紹 串列 (list) 和 元組 (tuple)

https://ithelp.ithome.com.tw/upload/images/20240918/20163326WKaI5hqZnh.png

這張圖還會再看到幾次,我們這次只講 list 串列,你會注意到它的形式就是用 [ 和 ] 把元素按順序放在裏頭,並且每個元素之間用 , 隔開,而且裏頭的元素,可以是任何型態的變數。

至於 元組 (tuple) 跟 串列 (list) 基本上操作都相似,差別在於:

  • 元組 (tuple) 是由 ( 和 ),把元素包在裡面的,而 串列是 [ 和 ]
  • 元組 (tuple) 是不可變動的 (immutable),也就是元組被創造之後,裡面的元素就不能被修改了,但相反的 串列 裡面的元素是可以被新增、刪除和修改的
  • 兩個皆為 ordered sequence 也就是 有順序的序列,什麼是有順序? 就是可以用 0, 1, 2, 3 … 來取到不同位置的元素
  • 另外請記得,空串列 [] 和 空元組 (),較複雜的程式會用到

關於 串列 (list) 的創造、存取及修改

https://ithelp.ithome.com.tw/upload/images/20240918/20163326Rgmhm4D5Sa.png

串列創造

  • lst = [10, 20, 30, 40, 50] 是指創造一個 lst 的串列變數,裡面的元素按順序是 10, 20, 30, 40, 50

串列存取

  • 串列 (list) 的第一個 元素 (element),對電腦來說是 第零個 元素,所以想要存取 (access) 串列的第一個元素時,我們是使用 lst[0]
  • 存取串列的公式 lst[索引 (Index)],變數名稱[ 第幾個 - 1 ],所以 lst[1] 也就是指 lst 這個串列裡面元素的 第二個,lst[2 - 1] ⇒ lst[1]
  • 索引 (Index) 也可以是負的!? 可以,而且挺直覺得,lst[-1] 即是指 lst 串列裡面最後一個元素,所以倒數第二個? lst[-2],簡單吧
  • 切片 (Slice) lst[start:end] 是個極其方便的用
    • lst[1:3] 是取出從第二個到第四個之前,所以就是 [20, 30]
    • lst[:3] 沒有 start,也就是指從頭開始,所以是取出從開頭開始到第四個之前,也就是 [10, 20, 30]
    • lst[3:] 沒有 end,也就是取到結尾,所以是取從第四個開始後的全部,也就是 [40, 50]

串列修改

  • 修改即時把跟存取元素很像,指是把它擺到左邊而已,例如,我們要把 lst 的第五個元素改成 25,那就是 lst[4] = 25,注意歐 = 是賦值,也就是把右邊的 25 複寫進去 lst 的第五個元素的位置

針對串列行為的方法 (method),添加、插入、刪除 …

https://ithelp.ithome.com.tw/upload/images/20240918/201633268d4bKjU2DV.png

這邊是串列的操作 方法(Method),這是什麼意思呢,有就是說我們把 lst 當成一個汽車 (物件),上面有非常多可以操作的元件,像是我們:

  • 汽車.踩油門,車子就會往前
  • 汽車.踩煞車,車子就會煞車停住
  • 汽車.開定速(60),車子就會以時速 60 往前

這邊的方法也是一樣,在對應的串列 lst 使用這些 方法 (Method),即會有不同的效果

我們這邊講幾個比較常用的

  • lst.append(elemt),在 lst 串列添加多一個元素 elemt 到結尾
  • lst.insert(index, elemt),在 lst 串列的第 index+1 的位置插入一個元素 elemt
  • lst.remove(elemt),搜尋 lst 串列的第一個出現同樣數值的 elemt 元素,並將其刪除,注意歐,指刪除從前面找到的第一個
  • lst.pop(index),把 lst 串列的第 index +1 個位置的元素給夾出來,並且回傳,第一個夾出來,所以該位置的元素已經被清出了,後面的元素會補上前面的位置
  • lst.sort(),將 lst 串列裡的元素做排序,由小排到大

上一篇
【Day03】寫程式解決問題有很多步驟,那上個步驟的結果如何傳遞給下個步驟呢?
下一篇
【Day05】透過 GenAI 指定用 字典 (dictionary) 表示一個簡易的電商訂單序列
系列文
30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言