List
Tuple
今天要講的內容:
索引基本運用
取得更新列表中的資料
連續資料處理
串接 取代 連續刪除 列表中的資料
取得列表長度(len=列表)
表示此列表中有多少資料
巢狀列表:
列表中的資料也是列表
List vs Tuple差異
操作大致相同
皆可以用索引來取值
差在資料可不可更動
List 有序"可"變動資料:用中括號表示 [ ]
Tuple 有序"不可"變動資料:用小括號表示 ( )
中間資料使用逗號(,)隔開
以下用List舉例:
印出列表中第一個資料:
grades=[12,33,66,71,81]
print(grades[0])=12 #從序號0開始算起
更換列表資料
grades=[12,33,66,71,81]
grades[2]=90 #把列表第2個資料改成90
print(grades)=[12,33,90,71,81]
選取特定字元
grades=[12,33,66,71,81]
print(grades[1:4]) #選取第一個到第四個(不含)
結果為 [33,66,71]
連續刪除字元
grades=[12,33,66,71,81]
print(grades[1:4])=[]
#把第1個到第4個(不含)變成空白=連續刪除編號1到編號4(不含)的資料
結果為:[12,81]
串接資料(列表串接)
grades=[12,33,66,71,81]
grades=grades+[100,52,42]
# 看到等號先看等號右方,這行意思是列表後面再加三個資料
print(grades)=[12,33,66,71,81,100,52,42]
列表長度len
grades=[12,33,66,71,81]
length=len(grades) #取得列表長度=len(列表資料)
print(length)= 5 #列表有5個資料
巢狀列表
data=[[3,4,5],[7,8,9]] #第一層[0]=第二層[3,4,5]
print([0][1])
#列表有兩層,選擇第ㄧ層列表[0]=[3,4,5]裡的第一個資料[1]=4
結果為:4
換資料
data=[[3,4,5],[7,8,9]] #原始列表
data[[0],[0:2]] = [5,5,5] # 0:2(不含)=[3,4]改成[5,5,5]
print(data)
data=[[5,5,5,5],[7,8,9]] #新列表
以下示範Tuple的差異
*不可變動有序列表
data=((3,4,5),(7,8,9)) #原始列表
print(data[0],[0:2]) = (5,5,5)
#錯誤 不可更動資料(新資料取代舊資料)
使用tuple(串列)
可以將串列轉換成 tuple
a = ['apple','banana','orange','grape']
b = tuple(a) #新增變數b來裝
type(b) # tuple 類型
*備註:type() => Python內建函式,用來查物件的型別
型別有:int,str,list,tuple...
若只是單次判斷型別,不儲存不使用變數b
也可以寫成 type((tuple(a))=tuple
Python Unpacking (解包)
類似拆箱,把裡面的東西一次賦值給多個變數內容
透過這個方法可以一次將項目丟給不同的變數
接著只要讀取變數,就能讀取對應內容
( 注意,使用這個方法時,等號左右邊要一致,否則噴錯誤 )
以 tuple 舉例:
t = ('apple','banana','orange','grap')
a, b, c, d = t
print(a) # apple
print(b) # banana
print(c) # orange
print(d) # grap
若不確定數量
可以用*來接剩下的
以 list 舉例:
l = ['apple', 'banana', 'orange', 'grape']
a, *b = l#不確定有幾個以*表示剩下的)
print(a) # apple
print(b) # ['banana', 'orange', 'grape']
適用的型別:
tuple
list
string(字串也是可迭代的!)
其他 iterable(像是 set、range、generator...)
字串舉例:
word = "Hi"
a, b = word
print(a) # H
print(b) # i
「星號」解包:不確定數量時
如果左邊的變數數量跟右邊不一致,會報錯
但可以用 * 來收集剩下的元素
numbers = [1, 2, 3, 4, 5]
-
1. 只知a,b但不知後面多少個
a, b, *rest = numbers
print(a) # 1
print(b) # 2
print(rest) # [3, 4, 5]
-
2.不知c,d前面有多少個a = 收尾
*a, b, c = numbers
print(a) # [1, 2, 3]
print(b) # 4
print(c) # 5
交換變數(不用中間變數)
a, b = 10, 20
a, b = b, a
print(a, b) # 20 10
快速拆字典的 key-value
d = {'name': 'Amy', 'age': 25}
for k, v in d.items():
print(k, v)
#name Amy
#age 25
備註:
d.items()
是一個方法
會回傳 (key, value) 的 tuple
延伸:
只要 Key
for k in d: # d 預設keys 不用寫d.keys()
print(k)
#name
#age
只要 Value
for v in d.values():
print(v)
#Fifi
#25