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
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Basic python data structure
Thumbnail
Basic python data structure
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
我們將會學習 Python 中的數據結構。 主要的數據結構包括列表 (List)、元組 (Tuple)、字典 (Dictionary) 以及集合 (Set)。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
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
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News