CH6 Turple, List


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
#Python






你可能感興趣的文章

AI輔導室|超神速畫出注目線

AI輔導室|超神速畫出注目線

Java Stream intermediate operations are lazily executed

Java Stream intermediate operations are lazily executed

[Week 2] JavaScript - 函式 function

[Week 2] JavaScript - 函式 function






留言討論