Tuple, List 物件基礎概論
tuple, list可以協助撰寫更複雜的應用程式或處理更複雜且大量的資料。
*eg 假設今天想要儲存台積電(2230)七天的股價資訊,若使用字串儲存,則呈現方式如下:
stock_price: '100,150,160,170,200,50,80'
若使用tuple, list等容器物件(裡面可以放入不僅是字串的元素,故稱之為容器)
#tuple範例
stock_price = (240,245,241,242,245,247)
#取出第一筆股價資料(240)
print(stock_price[0])
#list範例
stock_price = [240,245,241,242,245,247]
#取出第一筆股價資料(240)
print(stock_price[0])
可變物件(mutable)和不可變物件(immutable)的差異
-可變物件(mutable):可以更改內容的物件,如list(串列), dict(字典)。
-不可變物件(immutable):不可以更改內容的物件,如字串、tuple(元組)
舉例:
可變物件:
stock_price_1=[240,250,270,280]
#將變數都指到同一個list物件上時,檢查改動其中一個變數是否會影響到另外一個
stock_price_1 = stock_price_2
#更改stock_price_1 第一筆資料
stock_price_1[0] = 250
此時,如果print(stock_price_1),其結果會變為[**250**,250,270,280],而print(stock_price_2)的結果也會與1的結果相同。
不可變物件:
未賦予language_2到'java'字串時,print兩者結果會相同。
賦予language_2到'java'字串時,print兩者結果則變為language_1 = python,language_2 = java。
隨堂練習:試試看可變物件(mutable)和不可變物件(immutable)的差異
什麼是tuple 元組?
字串是由一連串的字元所組成的容器物件(可以存放一個個字元),在 tuple 則可以想成是任何資料型別的物件元素都可以依序組成 tuple 容器,tuple 的內容則稱為元素(element)。在 Python 中則使用 ()
包起來,而元素間使用 ,
分隔。
*使用格式:
(元素1,元素2,元素3)
#空的tuple
()
#包含3個整數的tuple
(1,2,3)
#包含1個整數和2個字串的tuple
(1,'Python','Java')
#包含1個布林和一個tuple的tuple
(True,(2,3))
#指包含一個元素的tuple,**逗號必須留著**,若是寫成 (10) 則會被當成整數而非 tuple
(10,)
*隨堂練習:建立tuple
建立一個內含字串jack
、整數20
、布林值True
的tuple。
name_tuple=('jack',20,True)
print(name_tuple)
tuple 的基本操作
*len() 取得 tuple 長度
#3
name_tuple=('jack',20,True)
print(len(name_tuple))
*索引 [index] 取得 tuple 內部元素
tuple 是由一連串有順序的物件元素所組成,也可以像是字串物件一樣使用索引值取得元素內容。
1.字串索引
# J
name = 'Jack'
print(name[0])
2.tuple索引
#python
name_tuple=('python','java','c++','c#')
print(name_tuple[0])
*切片 slicing [:]
[起始值:(不含)終止值:間隔]
#(1,2,3)
num_tuple=(1,2,3,4,5,6,7,8,9)
print(num_tuple[0:3])
*tuple 內元素互換
var_one=1
var_two=3
print(var_one,var_two)
#得到(1,3)
(var_one,var_two) =(var_two,var_one)
print(var_one,var_two)
#得到(3,1)
*tuple的運算
#串接兩個tuple '+()'
num_1=(89,5)
num_2=(22,)
print(num_1+num_2)
#新增一個元素至tuple中 '+()'
num_1=(89,5)+(22,)
複製元素 '*'
num_1=(89,5)*3
print(num_1)
#從切片[: :]插入
num_tuple = (89,22)
num_tuple = num_tuple[0:1]+(5,)+num_tuple[1:]
print(num_tuple)...(89,5,22)
*隨堂練習:tuple 基本操作
使用一個空的 tuple 物件,透過 + 方法,將三個顏色(red、white、blue)新增到 tuple 容器物件中,並取出第一個值
color=()
color = color + ('red',)
color = color + ('white',)
color = color + ('blue',)
print(color[0])
什麼是 list 列表?
list與tuple大同小異,差在list是可變,且以[]
表示,而tuple是不可變且以()
表示。
list=[]
list=['jack',]
list=['jack',]+['leo',]
list=['jack',]+['leo',]+['Amy',]
list=['jack',]+['leo',]+['Amy',]+['Tom',]
print(list)
list常見操作
*len()
取得list長度
list=['jack',]+['leo',]+['Amy',]+['Tom',]
print(len(list))
*索引[idex]
取得list內部元素
#得 Amy
list=['jack',]+['leo',]+['Amy',]+['Tom',]
print(list[2])
*使用切片 slicing [:]
#得['jack','Amy']
list=['jack',]+['leo',]+['Amy',]+['Tom',]
print(list[::2])
*新增/刪除 list 元素
list可以使用append
新增元素:
list=['jack',]
list.append('Amy')
#得['jack','Amy']
print(list)
若使用 print(list.append('Amy')) 實際上是打印了 append() 方法的返回值,而不是列表本身,回傳只會得到 None。
透過remove
移除元素
#得 ['jack']
list=['jack','Amy']
list.remove('Amy')
print(list)
list的運算
使用``來複製元素
#得['jack','Amy','jack','Amy']
list=['jack','Amy']*2
print(list)
使用+
來串連兩個不同的list
#得['jack']+'amy']
list=['jack']+['amy']
print(list)
list和tuple的差異
特性 | tuple元組 | list列表 |
---|---|---|
容器內的物件元素不會改變 | O | X |
佔用容量比較小、操作效能較佳(讀取速度較快) | O | X |
可直接修改容器內內容 | X | O |