iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
自我挑戰組

Python 30天自我挑戰系列 第 5

Day05 - Python基本語法 Part 2,關於「集合」

接續昨天的基本語法,今天將主要集中在「集合」的內容整理。
範例程式主要來自於W3Schools

集合

Python中四種集合,以下為四種集合的簡單比較:

類型 是否有順序(註1) 內容是否可改變 內部元素是否可重複
List Y Y Y
Tuple Y N Y
Set N N(註2) N
Dictionary Y(註3) Y N(註4)

註1:有順序意味著可以使用index進行存取。
註2:Set內部元素不可直接修改,但可以新增和刪除。
註3:Python 3.7後才有順序性,Python 3.6前都是無順序性。
註4:內部元素重複出現時系統不會報錯,但是會以「後蓋前」的方式設定數值。

List

  • 建立List
mylist1 = ["apple", "banana", "cherry"]
mylist2 = list(("apple", "banana", "cherry"))
  • 使用index改變List內的元素
note = "改變的元素數量 {} 指派的元素數量: {}"

# 改變的元素數量 = 指派的元素數量
thislist = ["apple", "banana", "cherry", "orange"]
thislist[1:3] = ["blackcurrant", "watermelon"]
print(note.format("=", thislist))

# 改變的元素數量 < 指派的元素數量
thislist = ["apple", "banana", "cherry", "orange"]
thislist[1:2] = ["blackcurrant", "watermelon"]
print(note.format("<", thislist))

# 改變的元素數量 > 指派的元素數量
thislist = ["apple", "banana", "cherry", "orange"]
thislist[1:3] = ["blackcurrant"]
print(note.format(">", thislist))

Output:

改變的元素數量 = 指派的元素數量: ['apple', 'blackcurrant', 'watermelon', 'orange']
改變的元素數量 < 指派的元素數量: ['apple', 'blackcurrant', 'watermelon', 'cherry', 'orange']
改變的元素數量 > 指派的元素數量: ['apple', 'blackcurrant', 'orange']
  • 插入元素:list.insert(index, value)
thislist = ["apple", "banana", "cherry", "orange"]
thislist.insert(2,"blackcurrant")
print(thislist)
  • 新增元素:list.append(value)
thislist = ["apple", "banana", "cherry", "orange"]
thislist.append("blackcurrant")
print(thislist)
  • 將另一個集合(型態不限定為List)合併到目前的List:extend(anotherList)
# 合併兩個list (使用extend)
thislist = ["apple", "banana", "cherry", "orange"]
otherlist = ["blackcurrant", "pineapple"]
thislist.extend(otherlist)
print(thislist)

# 合併兩個list (使用 + )
thislist = ["apple", "banana", "cherry", "orange"]
otherlist = ["blackcurrant", "pineapple"]
finallist = thislist + otherlist
print(finallist)

# 合併tuple到list
thislist = ["apple", "banana", "cherry", "orange"]
othertuple = ("blackcurrant", "pineapple")
thislist.extend(othertuple)
print(thislist)
  • 刪除元素
  1. list.remove(value):根據元素數值刪除。
  2. list.pop(index):根據index刪除。
  3. del list[index]:根據index刪除。
  4. list.pop():從最後一個刪除。
  5. list.clear():清空List內所有元素,但List本身仍存活。
  6. del list[index]:根據index刪除。
  7. del list:刪除整個List,刪除後List本身即不存在。
  • 排序
  1. list.sort():預設為正序排列。
  2. list.sort(reverse = true):倒序排列。
  3. list.reverse():反轉排列。
  4. list.sort(key = function):根據自定義的function做排序。
# 無視大小寫進行排序
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)

Tuple

  • 建立Tuple
mytuple1 = ("apple", "banana", "cherry")
mytuple2 = tuple(("apple", "banana", "cherry"))

# 建立僅含單一元素的tuple
mytuple3 = ("apple",)
  • 改變Tuple:Tuple本身不可變動,但可藉由將Tuple轉換成List進行變動後再重新轉換回Tuple以達到目的。

  • 計算Tuple內特定元素出現的次數:tuple.count(value)

thistuple = ["apple", "banana", "apple", "orange"]
print(thistuple.count("apple"))
  • 回傳Tuple內特定元素出現的第一個位置:tuple.index(value)
thistuple = ["apple", "banana", "apple", "orange"]
print(thistuple.index("apple"))

Set

  • 建立Set
myset1 = {"apple", "banana", "cherry"}
myset2 = set(("apple", "banana", "cherry"))

# 建立僅含單一元素的tuple
mytuple3 = ("apple",)
  • 因沒有index,故想要找到特定元素只能透過迴圈的方式尋找。
thisset = {"apple", "banana", "cherry"}

# 印出set內所有元素
for x in thisset:
  print(x)

# 判斷banana是否存在set
print("banana" in thisset)
  • Set內部的元素不可被改變,但可以新增與刪除。
    • 新增
    1. set.add(value):新增單一元素。
    2. set.update(collection):合併其他集合 (不限定為Set)。
    3. set.union(otherset):回傳一個新的Set,其為原本Set合併其他Set (不能為其他種型態的集合)。
    • 刪除
    1. set.remove(value):刪除元素,該元素不存在於set時「會」回傳error。
    2. set.discard(value):刪除元素,該元素不存在於set時「不會」回傳error。
    3. set.pop():刪除最後一個元素,但因Set不存在順序,故無法預期被刪除的元素為何。
    4. set.clear():清空Set內所有元素,但Set本身仍存活。
    5. del set:刪除整個Set,刪除後Set本身即不存在。

Dictionary

  • 建立Dictionary
dict = {
  "id":1,
  "name":"Alice",
  "age":25
}
print(dict)
  • 存取特定元素
  1. dict["keyname"]
  2. dict.get("keyname")
  • 取得Dictionary中所有元素的名稱:dict.keys()

  • 取得Dictionary中所有元素數值:dict.values()

  • 新增元素/ 變更原有元素數值

  1. dict["keyname"] = value
  2. dict.update(dictionary)
dict = {
  "id":1,
  "name":"Alice",
  "age":25
}

dict["age"] = 27
print(dict)

dict.update({"age":24})
print(dict)
  • 刪除元素
  1. dict.pop("keyname"):移除特定元素
  2. dict.popitem():移除最後一個元素
  3. del dict["keyname"]:移除特定元素
  4. del dict:刪除整個Dictionary
  5. dict.clear():清空Dictionary

上一篇
Day04 - Python基本語法 Part 1
下一篇
Day06 - Python基本語法 Part 3,函式與類別
系列文
Python 30天自我挑戰30

尚未有邦友留言

立即登入留言