iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Python

我的Python奇幻學習之旅系列 第 17

鐵人賽 Day17 Python的奇幻之旅-Set

  • 分享至 

  • xImage
  •  

Set (集合) 的功用是在單一變數中存取多個項目
Set 也是內建的資料類型之一,他是無序、不可更改且'無索引'的集合

  • 雖然不可變更,但可以刪除項目跟新增項目
  • 集合用大括號書寫'{}'
  • 不允許有重複值:如果有重複的值出現,第二次出現的值將會被忽略
  • 注意:True 跟1,Flase跟0,會被集合判定為相同值,而忽略第二個
  • 無序:代表集合中的項目沒有順序,每次使用時會以不同順序出現,且不能透過索引使用
  • 不可改變:代表建立後集合的項目是不可以改變的,但可以新增跟刪除項目

建立集合例子:

this_set = {'apple','a','banana','b'}
print(this_set)
#輸出結果
#因為集合是無序的索以輸出後沒辦發知道輸出的順序
#{'a', 'apple', 'banana', 'b'}

  • 重複值得特別案例
    這裡的True跟False 是以"布林值"來看的,在"布林值"中他們分別代表1,0
    所以會被判定為重複資料

this_set = {"apple", "banana", "c", False, 0, 2}
print(this_set)
#輸出結果
#{False, 2, 'banana', 'apple', 'c'}

this_set = {"apple", "banana", "c", True, 1, 2}
print(this_set)
#輸出結果
#{True, 2, 'c', 'banana', 'apple'}

新增項目

add()

將新的項目新增至集合中用add()

this_set = {"a", "b", "c", 1, 2, 3}
this_set.add("d")
print(this_set)
#輸出結果
#{1, 2, 3, 'c', 'b', 'a', 'd'}

update()

如果要將a集合中的項目新增至目前b集合中
可以理解成將a集合中的項目更新到b集合中

set_a = {"a", "b", "c", 1, 2, 3}
set_b = {"d", "e", "f", 4, 5, 6}
set_b.update(set_a)
print(set_b)
#輸出結果
#{1, 2, 'd', 4, 5, 6, 3, 'e', 'f', 'a', 'b', 'c'}

刪除項目

remove() 或 discard()

remove跟discard都可以刪除項目,但如果要刪除的項目不存在了,remove會出現錯誤,但discard不會出現錯誤

this_set = {"a", "b", "c", 1, 2, 3}
this_set.remove("c")
print(this_set)
#輸出結果
#{1, 2, 3, 'b', 'a'}

this_set = {"a", "b", "c", 1, 2, 3}
this_set.discard("c")
print(this_set)
#輸出結果
#{'a', 2, 1, 3, 'b'}

pop()

pop也可以刪除項目沒錯,但是會隨機刪除項目,沒辦法確定刪除哪些項目

因為集合是無序地所以在使用pop的時候會不知道哪個項目被刪除

this_set = {"a", "b", "c", 1, 2, 3}
x = this_set.pop()
print(x)
#輸出結果# 1
print(this_set)
#輸出結果
#{2, 3, 'b', 'c', 'a'}

clear()

清空集合內的值,最後會輸出空集合

this_set = {"a", "b", "c", 1, 2, 3}
this_set.clear()
print(this_set)
#輸出結果
#set()

del

完全將集合刪除

this_set = {"a", "b", "c", 1, 2, 3}
del this_set
print(this_set)
#輸出結果
#錯誤訊息,因為已經沒有這個集合了


上一篇
鐵人賽 Day16 Python的奇幻之旅-Tuple篇-3
下一篇
鐵人賽 Day18 Python的奇幻之旅-Dictionary
系列文
我的Python奇幻學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言