【Python自學】Python集合類型總整理(List、Sets、Tuple、Dictionary)
Python自學_集合類型(List、Sets、Tuple、Dictionary)
List(列表)— 可變、可重複、有順序
特性:有順序(indexed)、可修改(mutable)、允許重複值
建立方式-中括號
my_list
= ["籃球","桌球","網球"]
「List大概是集合裡面最彈性的,畢竟列表(清單)就只是"列出來”。常用的地方也很直觀,就是購物車(購物清單)」
常用操作:
用位置來呼叫,看裡面是什麼?
my_list
= ["籃球","桌球","網球"]
print(my_list[2])
#網球
用for迴圈走訪list列表裡面的元素
my_list
= ["籃球","桌球","網球","籃球"]
for
item in my_list:
print(item)
#籃球
桌球
網球
籃球
append():將新的字元加在最後
my_list
= ["籃球","桌球","網球"]
my_list.append(1)
print(my_list)
#['籃球', '桌球', '網球', 1]
(補充):list列表裡面可以放不同資料型別,該例中的"籃球","桌球","網球,都是字串,而我append(1)的是整數。
remove():移除第一個符合的值
my_list
= ["籃球","桌球","網球","籃球"]
my_list.remove("籃球")
print(my_list)
#['桌球', '網球', '籃球']
(備註)remove()只移除第一個。我在list裡宣告兩個"籃球"(可重複性),但remove()只移除第一個。
index():搜尋第一個符合的值,並回傳位置
my_list
= ["籃球","桌球","網球","籃球"]
print(my_list.index("籃球"))
print(my_list.index("桌球"))
#0
1
【備註】可以發現第二個籃球的位置(3)並沒有被回傳,只回傳第一個籃球的位置(1)
Tuple(元組)— 不可變、有順序、可重複
特性:有順序、不可修改(immutable)、允許重複
建立方式-小括號
my_tuple = (1, 2, 3, "阿元")
「Tuple的中文翻譯是"元組",我覺得翻得很好,因為"元"是一開始的、原始的,這就象徵著"不可變"的特性。」
常用操作
count():數量
my_tuple
= (5,8,10,5,5)
print(my_tuple.count(5))
#3
總共有3個5。
index():位置(指搜尋第一個)
my_tuple
= (5,8,10,5,5)
print(my_tuple.count(5))
#0
(注意)tuple幾乎沒有修改方法(因為不可變)
(用途)不希望被改動的資料(例如:固定設定值、經緯度)
Set(集合)— 無順序、不可重複、可變
特性:無順序(不能用 index)、自動去重複、可修改(mutable)
建立方式-關鍵是大括號
舉例來說:
my_set
= {1, 2, 3, 3}
# 自動變成 {1, 2, 3}
常用操作:
add():加入
my_set
= {1, 2, 3, 3}
my_set.add(4)
print(my_set)
# 變成 {1, 2, 3,4}
remove():移除
my_set
= {1, 2, 3}
my_set.remove(3)
print(my_set)
#{1,
2}
檢測某元素有沒有在set裡面
my_set
= {1,2,3,4,5}
if 1
in my_set:
print("1有在裡面")
if 6
in my_set:
print("6有在裡面")
else:
print("6沒有在裡面")
#1有在裡面
6沒有在裡面
Dictionary(字典)— 鍵值對、可變、無順序(Python 3.7+有插入順序)
特性:由 鍵(key) ➜ 值(value)
組成
(重點)key 不能重複;value 可以重複
可修改(mutable)
建立方式-大括號,且一個key對一個value{key:value}
my_dict
= {
"name": "阿元",
"age": 36,
"job": "藥師"
}
【常用操作】
dict["key"]:取值。(如果沒有key的話,此種取值方式會噴錯,因此只適用確定有該值的情況)
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
print(my_dict["name"])
print(my_dict["age"])
print(my_dict["job"])
#一一的把值給取出來
程式執行:
阿元
26
藥師
dict.get("key"):安全取值(如果沒有key的話,回傳none。與上一個取值方式的結果截然不同)
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
print(my_dict.get("name"))
程式執行結果:阿元
my_dict.get("A",0):這種取值方式是指假如字典裡面沒有”A",那就建立一個A並回傳0;假如字典本來就有A,那就把A(key)的值(Value)取出來。
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
my_dict["experience"]=my_dict.get("experience",0)
print(my_dict) #原本沒有experience,所以建立一個experience並回傳0
my_dict["age"]=my_dict.get("age",18)
print(my_dict) #原本就有age,所以取出他的值(value),也就是26(不是18)
程式執行結果:
{'name': '阿元',
'age': 26, 'job': '藥師', 'experience': 0}
{'name': '阿元',
'age': 26, 'job': '藥師', 'experience': 0}
更新鍵值對-update()
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
my_dict.update({"interest":"coding"})
print(my_dict)
程式執行結果:
{'name': '阿元',
'age': 26, 'job': '藥師', 'interest': 'coding'}
刪除鍵值對-pop()
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
my_dict.pop("name")
print(my_dict)
程式執行結果:{'age': 26, 'job': '藥師'}
取出所有鍵值對-items()
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
print(my_dict.items())
程式執行的結果:dict_items([('name', '阿元'), ('age', 26), ('job', '藥師')])
取出鍵值對裡所有的值-values()
my_dict
= {
"name": "阿元",
"age": 26,
"job": "藥師"
} #設定字典
print(my_dict.values())
程式執行結果:dict_values(['阿元', 26, '藥師'])
Dictionary用途:結構化資料(如 JSON、設定檔、商品資料)
「Dictionary字典,我對這個集合的理解與記憶其實也非常直觀!想想看,現實中的字典就是一個單字對一個解釋,也就是所謂的key對value。而一個字典裡,同一個單字只會出現一次,但是不同單字卻可能有同一個解釋(相似詞),所以key不可重複,但是value可以重複。」
四者特性快速比較表
List:有順序、可改、可重複
Tuple:有順序、不能改、可重複
Set:無順序、不可重複、可改
Dict:key-value 組合、key 不重複、可改
留言
張貼留言