PY 筆記 | Data Structure

更新 發佈閱讀 7 分鐘

又轟轟地結束第二個月的課程。這一個月的課程聚焦在如何處理 Python 的資料。

字串 (String)

字串是非常非常常見的資料結構,常見到什麼程度?大概是我上班路上會遇到的紅燈機會那麼高吧 XD

介紹幾個好用的字串方法:

  1. find:這可以找出特定字元的位置 (index)。
  2. len:計算字串的長度。
  3. strip:去除字串前後的空白。他還有兄弟 lstriprstrip,顧名思義就是只去除左邊或右邊的空白。
  4. lowerupper:把字串變成全部小寫或全部大寫。
  5. replace("old", "new"):用新字元替換舊字元。
  6. startswithendswith:判斷字串是否使用特定的前綴或後綴。

以下為簡單的範例:

text = "X-DSPAM-Confidence:    0.8475"
pos = text.find(' ')
textLen = len(text)
print(pos, textLen)
print(text[pos : textLen].strip())



文件 (File)

我們可以用 Python 來讀取文件,以下範例為使用課程提供之純文字文件作範例,如果想自己練習的話,可以自己建一支 txt 檔案。

  1. open:開啟一個文件,可以加入第二個參數,比如 "r" 為唯讀、"w" 為編輯 (會從開啟處覆蓋掉舊內容)、"a" 為續寫。
  2. read:檔案開啟後,逐行讀取檔案。readline 也可以讀取整行資料,但他只讀取一行,read 是逐行讀完整個檔案。

以下為簡單範例,會逐行印出去除左右空白且轉為大寫的字串:

fname = input("Enter file name: ")
fh = open(fname)
for line in fh:
lh = line.strip().upper()
print(lh)



列表 (List)

用 JavaScript 的思維想就是陣列,基本操作跟字串大差不差,但列表中的元素可以直接修改,字串不行。

  1. lst["start" : "end"]:索引或裁切,這個同樣適用於字串。
  2. maxminsum:取列表的最大、最小或值得總和。
  3. appendinsert:前者為向列表後插入一個元素;後者接受兩個參數,第一個是插入位置,第二個是插入元素。
  4. popremove:前者不加參數時會直接從列表後方取出最後一個元素並從原列表中山出該元素,帶參數則是取出指定位置參數;後者會去搜尋整個列表符合參數的部分,但僅會刪除遇到第一個符合的部分。
  5. index:可以返回元素索引值,也可以用在字串。
  6. lst.sort()sorted(lst):前者是對原列表做排序,後者是返回一個排序後的列表。
  7. reverse:反轉列表。

以下為簡單範例,把檔案中的單字逐一送入變成列表:

fh = open('romeo.txt')
lst = list()
for line in fh:
subLst = line.strip().split()
for i in range(len(subLst)):
lst.append(subLst[i])
lst = list(set(lst))
lst.sort()
print(lst)



字典 (dictionary)

用 JavaScript 的方式講,就是物件,同樣可以用 { } 宣告或是用 dict()

字典有趣的地方是每個元素都由鍵 (key) 與值 (value) 組成,這可以讓我們更靈活地去操縱比較複雜的資料。我們可以用 dic["key"] 的方式去取出存在某個 key 下面的值來使用,也可以用這個方法來輕鬆新增或修改。接著下面為常用的字典方法。

  1. keys:返回所有鍵。
  2. values:返回所有值。
  3. items:一個一個返回鍵值對。
  4. clear:清空字典。
  5. get:獲取指定 key 的值,如果沒有這個 key 就給他默認值 (詳見範例)。

以下為一個簡單的範例,用來找出發信最多的信箱以及其次數:

fh = open('mbox-short.txt')
dic = dict()
maxNum = 0
maxEmail = ''
for line in fh:
if not line.startswith('From'):
continue
elif line.startswith('From:'):
continue
else:
words = line.strip().split()
dic[words[1]] = dic.get(words[1], 0) + 1
for i in dic:
if dic[i] > maxNum:
maxNum = dic[i]
maxEmail = i
print(maxEmail, maxNum)



元組 (tuples)

我在 TypeScript 的文章中說過,元組是一個長得很像陣列 (在 Python 叫列表) 但又比陣列嚴苛的東西。

寫過 TypeScript 的都知道原組和陣列都是用 [ ]包起來,但 Python 中的元組則是用 ( ) 包起來。

元組最大的特性就是不可修改,這種只能讀而無法修改的特性可以讓我們放心儲存那些怕更動到的資料。而其實我們在前面字典中已經有稍微接觸過元組了,要不要猜猜看?

答案就是 items 方法!

上面有講到 items 會回傳一組組的 key-value pair,這個一組組就是元組的格式。

以下為一個簡單的範例,這裡在最後用 items 把字典拆成元組並透過 sorted 進行排序:

fh = open('mbox-short.txt')
dic = dict()
for line in fh:
if not line.startswith('From'):
continue
elif line.startswith('From:'):
continue
else:
colonIndex = line.index(':')
hr = line[colonIndex - 2 : colonIndex]
dic[hr] = dic.get(hr, 0) + 1
ls = sorted(dic.items())
for k, v in ls:
print(k, v)



參考資料

  1. Python for Everybody / Coursera
留言
avatar-img
Jeremy Ho的沙龍
20會員
37內容數
這個專題用來存放我在學習網頁開發時的心得及知識。
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
Basic python data structure
Thumbnail
Basic python data structure
Thumbnail
複習一下: 我們學習了關於撰寫程式的相關觀念 條件分支(if/else) : 藉由條件分支讓程式執行相對應的功能。 迴圈(while loop ) :程式利用迴圈反覆執行某個區塊的程式碼。 字串處理 (string) : 每個程式都在處理資料,而字串是一種非常重要且常用的資料。 函式(fu
Thumbnail
複習一下: 我們學習了關於撰寫程式的相關觀念 條件分支(if/else) : 藉由條件分支讓程式執行相對應的功能。 迴圈(while loop ) :程式利用迴圈反覆執行某個區塊的程式碼。 字串處理 (string) : 每個程式都在處理資料,而字串是一種非常重要且常用的資料。 函式(fu
Thumbnail
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
Thumbnail
List 清單 和 Tuple元組 清單在Python裡面非常的常用,大家一定要熟練這些基礎的元素。 在Python中,列表(List)是一種常用的資料類型,用於儲存一組有序的元素。列表是可變的(Mutable),這意味著你可以在列表中新增、刪除和修改元素。列表使用方括號 []
Thumbnail
sort reverse count index copy len min max sum any all
Thumbnail
sort reverse count index copy len min max sum any all
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Hi, 大家好。我是茶桁。 前几节课中我们学习了函数,那么这节课开始,我们花几节课返过头来详细的学习一下Python内的数据类型。第一节课,让我们先从字符串开始: 回顾字符串的定义方式 了解转义字符 字符串格式化的方法 字符串相关函数 字符串的定义方式 单引号定义字符串 ‘ ’ 双引
Thumbnail
Hi, 大家好。我是茶桁。 前几节课中我们学习了函数,那么这节课开始,我们花几节课返过头来详细的学习一下Python内的数据类型。第一节课,让我们先从字符串开始: 回顾字符串的定义方式 了解转义字符 字符串格式化的方法 字符串相关函数 字符串的定义方式 单引号定义字符串 ‘ ’ 双引
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
Thumbnail
我們介紹了字串和列表的索引和切片操作。索引使用方括號[]來選擇字串或列表中的特定元素,並可以使用正向索引(從0開始)或反向索引(從最後一個元素為-1)來訪問元素。切片使用方括號[]和冒號:來選擇字串或列表中的一段子序列,指定起始位置和結束位置(不包含),並可以使用步長來控制間隔。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News