iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0

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

上一篇
Day 4 數字與字串運算
下一篇
Day 6 集合/字典的基本運算
系列文
呼蛇容易遣蛇難,要就當大蟒蛇!一起來Python吧 !30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言