Python 自學第四天:List、Tuple、Set 和 Dictionary 的基本運算

這篇介紹如何處理 ListTupleSetDictionary 資料型態的基本運算以及常用程式語法。

列表 List

列表 List 有順序,每個元素都有編號。可以新增、刪除和替換元素。

擷取元素

中括弧 [] 取得該位置的元素。用 [n:m] 截取從 nm-1 的一段 List。

1
2
3
4
myList = ["Python", "Java", "C++", "JS", "Ruby", "PHP"]
print(myList[0:3]) # 取得 0~3(不包含) 位置的列表

# ['Python', 'Java', 'C++']

列表串接

使用 +

1
2
3
4
myList = ["Python", "Java", "C++", "JS", "Ruby", "PHP"]
print(myList + ["Vue", "VB"])

# ['Python', 'Java', 'C++', 'JS', 'Ruby', 'PHP', 'Vue', 'VB']

替換元素

使用 = 重新指派元素的值。如果原 List 中的某一段,被新的 List 取代,個數可以不一樣。

1
2
3
4
5
6
7
8
myList = ["Python", "Java", "C++", "JS", "Ruby", "PHP"]
myList[1] = "C#" # "Java" 換成 "C#"
print(myList)
myList[3:5] = ["Vue", "JRuby", "AAA"] # "JS", "Ruby" 換成 "Vue", "JRuby", "AAA"
print(myList)

# ['Python', 'C#', 'C++', 'JS', 'Ruby', 'PHP']
# ['Python', 'C#', 'C++', 'Vue', 'JRuby', 'AAA', 'PHP']

刪除元素

使用 [] 替換元素。

1
2
3
4
5
myList = ["Python", "Java", "C++", "JS", "Ruby", "PHP"]
myList[3:5] = [] # 刪除 "JS", "Ruby"
print(myList)

# ['Python', 'Java', 'C++', 'PHP']

重複元素

使用 *

1
2
3
4
myList = ["Python"]
print(myList * 4)

# ['Python', 'Python', 'Python', 'Python']

取得 List 長度

使用 len(列表) 取得 List 元素個數。

1
2
3
4
myList = ["Python", "Java", "C++", "JS", "Ruby", "PHP"]
print(len(myList))

# 6

包含、不包含

使用 innot in

1
2
3
4
5
6
7
8
myList = ["Python", "Java", "C++", "JS", "Ruby", "PHP"]
print("Python" in myList)
print("Vue" in myList)
print("Vue" not in myList)

# True
# False
# True

二維 List

1
2
3
4
5
6
7
8
num1 = [1, 3, 5]
num2 = [8, 6, 4, 2]
num = [num1, num2]
print(num)
print(num[1][0:2]) # 取得編號為 1 的 List([8, 6, 4, 2]),再截取 0~2(不包含) 的元素

# [[1, 3, 5], [8, 6, 4, 2]]
# [8, 6]

組合 Tuple

組合有順序,每個元素都有編號。不可以新增、刪除和替換元素。因此,除了新增、替換元素刪除元素之外,上述提到的 List 的基本語法,Tuple 都可以使用:

擷取元素、組合串接、重複元素、取得 Tuple 長度、包含、不包含以及二維 Tuple。

1
2
3
4
5
6
7
8
9
myTuple = ("Google", "Amazon", "Apple", "Yahoo")
myTuple[1] = "Samsung"
print(myTuple)

# 會報錯
# Traceback (most recent call last):
# File ".../xxxxx.py", line 2, in <module>
# myTuple[1] = "Samsung"
# TypeError: 'tuple' object does not support item assignment

組合串接有一個坑:

1
2
3
4
newTuple = ("Google", "Amazon", "Apple", "Yahoo")+("LG")
# 會報錯
# TypeError: can only concatenate tuple (not "str") to tuple
# ("LG") 會被認為字串而不是 Tuple

正確的寫法如下:

1
2
# 正確寫法:加個逗號
newTuple = ("Google", "Amazon", "Apple", "Yahoo")+("LG",)

集合 Set

集合是沒有順序,且元素不重複的一群資料。可以使用大括號 {}set(參數) 函數創造集合,參數可以是字串、List、Tuple 和 Set

交集

使用 &,取集合們中,重疊的資料。

聯集

使用 |,取集合們中,所有的資料,不重複取。

差集

使用 -,將第一個集合,減去和第二個集合重疊的資料

反交集

使用 ^,取集合們中,不重疊的資料。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
set1 = {"Google", "Amazon", "Apple", "Yahoo", "Google"}
set2 = {"Apple", "LG", "Nokia"}

print(set1)
print(set2)
# {'Apple', 'Google', 'Amazon', 'Yahoo'}
# {'Apple', 'LG', 'Nokia'}

print(set1 & set2)
print(set1 | set2)
print(set1 - set2)
print(set1 ^ set2)
# {'Apple'}
# {'Amazon', 'LG', 'Nokia', 'Yahoo', 'Google', 'Apple'}
# {'Amazon', 'Yahoo', 'Google'}
# {'Amazon', 'Yahoo', 'LG', 'Nokia', 'Google'}

將字串拆解成字母集合

1
2
3
4
set1 = set("Apple")
print(set1)

# {'l', 'e', 'p', 'A'}

取得 Set 不重複的元素個數

使用 len(集合)

包含、不包含

使用 innot in

字典 Dictionary

字典是鍵值對 (key-value pair) 的資料型態。

取得 value

使用 key

1
2
3
4
myInfo = {"name":"Jenifer", "age":10, "studentID":"a12345"}
print(myInfo["name"])

# Jenifer

注意不要重複使用雙引號

1
2
3
4
print(f"{myInfo["name"]} is {myInfo["age"]} years old.")

# 會報錯
# SyntaxError: invalid syntax

正確的寫法如下:

1
2
3
4
# 正確寫法:單引號和雙引號交錯使用
print(f"{myInfo['name']} is {myInfo['age']} years old.")

# Jenifer is 10 years old.

替換 value

使用 = 重新指派 key 的值。

1
2
3
4
5
myInfo = {"name":"Jenifer", "age":10, "studentID":"a12345"}
myInfo["age"] = 15
print(myInfo["age"])

# 15

判斷 key 是否存在

使用 innot in

1
2
3
4
myInfo = {"name":"Jenifer", "age":10, "studentID":"a12345"}
print("name" in myInfo)

# True

刪除鍵值對或字典

使用 del

1
2
3
4
5
6
7
8
myInfo = {"name":"Jenifer", "age":10, "studentID":"a12345"}

del myInfo["name"] # 删除 "name":"Jenifer"
print(myInfo)
# {'age': 10, 'studentID': 'a12345'}

del myInfo # 删除字典
# print(myInfo) # 會報錯,因為字典被刪除後就不存在

清除字典內容

使用 字典.clear()

1
2
3
4
myInfo.clear() # 清空字典
print(myInfo)

# {} # 不會報錯,因為字典還存在

參考資料:
彭彭的課程:Python 有序列表的基本運算 - List、Tuple
彭彭的課程:Python 集合、字典的基本運算 - Set、Dictionary