文章

Python-5-資料類型— list、tuple —好用的資料儲存櫃

零、前言

在一般程式語言中,有一個很重要的概念是「陣列」,是程式設計的元素之一,可做為一組相似性質項目的容器,例如:歌曲清單,就是把「歌曲」存在同一個「清單容器」中,故這個清單,可以看作是歌曲的陣列。

而 Python 也有類似的概念,就是listtuple,其實string也算是一種陣列,只不過string只能夠存「字元」,而listtuple則是可以存各種不同的資料類型,使用上更為多樣,以下將一一介紹其使用方式。

一、List 介紹與使用方式

list是 Python 中最常用的資料結構之一,可以用來存放一系列有序的項目,每個項目可以是不同類型的資料。

list是動態的,意思是我們可以隨時增加或移除項目。

先看資料結構:

1
2
3
4
5
6
7
8
# list 裡面存文字
my_str_list = ["元素1", "元素2", "元素3"]
# list 裡面存數字
my_num_list = [1,2,3,...]
# list 裡面存 list
my_list_of_list = [ ["元素1", "元素2", "元素3"], 
                    [1,2,3], 
                    ["元素1", "元素2", "元素3"]]
  • 增加元素:
1
2
my_str_list.append("新元素")
print(my_str_list)  # 會輸出 ["元素1", "元素2", "元素3", "新元素"]
  • 刪除元素:
1
2
my_str_list.remove("元素2")
print(my_str_list)  # 會輸出 ["元素1", "元素3", "新元素"]
  • 存取元素:
1
print(my_str_list[0])  # 會輸出 "元素1"
  • 檢查list元素數量:
1
print(len(my_str_list)) # 會輸出 3,代表裡面有 3 個元素

二、Tuple 介紹與使用方式

tuplelist非常相似,但有一個關鍵的不同:tuple是不可變的,意思是我們不能在創建後修改它的內容。

這使得tuple在需要保證數據不被改動的情況下特別有用。

先看資料結構:

1
2
3
4
5
6
7
8
# tuple 裡面存文字
my_str_tuple = ("元素1", "元素2", "元素3"...)
# tuple 裡面存數字
my_num_tuple = (1,2,3,...)
# tuple 裡面存 tuple
my_tuple_of_tuple = (   ("元素1", "元素2", "元素3"), 
                        (1,2,3), 
                        ("元素1", "元素2", "元素3"))
  • 存取元素:
1
print(my_str_tuple[0])  # 會輸出 "元素1"

三、使用案例說明

以下是一些使用 listtuple 在台灣股票金融相關的實際應用案例,幫助讀者理解這兩者在不同情境下的使用方式:

【案例 1:股票代號列表】

假設我們需要存儲一個可以隨時增刪的股票代號列表,這種情況下我們會使用 list,因為股票代號列表可能會隨著市場變動而改變。

1
2
3
4
5
6
7
8
9
10
# 使用 list 存儲股票代號
stock_symbols = ["2330", "2317", "2412"]

# 新增一個股票代號
stock_symbols.append("2454")
print(stock_symbols)  # 會輸出 ["2330", "2317", "2412", "2454"]

# 刪除一個股票代號
stock_symbols.remove("2317")
print(stock_symbols)  # 會輸出 ["2330", "2412", "2454"]

【案例 2:固定的交易日】

假設我們需要存儲一個固定不變的交易日列表,這種情況下我們會使用 tuple,因為交易日是固定的,不會改變。

1
2
3
4
5
6
7
8
9
10
11
# 使用 tuple 存儲每周的交易日
trading_days = ("星期一", "星期二", "星期三", "星期四", "星期五")

print(trading_days)  # 會輸出 ("星期一", "星期二", "星期三", "星期四", "星期五")

# 如果想要刪除某個交易日,必須先轉換成 list
temp_list = list(trading_days)
temp_list.remove("星期五")
trading_days = tuple(temp_list)

print(trading_days)  # 會輸出 ("星期一", "星期二", "星期三", "星期四")

【案例 3:股票資料表】

假設我們有一組股票的相關資料,其中包括股票代號、公司名稱、股價等資訊,每筆資料都可以用 tuple 存儲,因為每筆資料的「欄位結構」是固定的,不會改變。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 使用 tuple 存儲每支股票的資料
stock_1 = ("2330", "台積電", 600)
stock_2 = ("2317", "鴻海", 100)
stock_3 = ("2412", "中華電信", 110)

# 使用 list 存儲多筆股票資料
stocks = [stock_1, stock_2, stock_3]

print(stocks)
# 會輸出 [("2330", "台積電", 600), ("2317", "鴻海", 100), ("2412", "中華電信", 110)]

# 添加新股票資料
new_stock = ("2454", "聯發科", 800)
stocks.append(new_stock)

print(stocks)
# 會輸出 [("2330", "台積電", 600), ("2317", "鴻海", 100), ("2412", "中華電信", 110), ("2454", "聯發科", 800)]

四、結語

在初階的使用上,listtuple可以先看作類似的東西,都是用來存取資料的陣列,甚至大多時候用list會省事很多。

但是在未來比較進階的應用上,例如每筆資料中,一組資料分別代表某些特定欄位,比較類似資料表格的形式時,tuple的使用就會比list來得更佳,主要是tuple在效能上與資料正確性上會優於list,但這都是後話了~

本文章以 CC BY 4.0 授權