集合(set)是一個無序的不重復元素序列。
可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
1、使用大括號{}
basket = {
'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # {'apple', 'orange', 'banana', 'pear'}
當使用
print()函數
打印輸出時,會自動將集合中重復的元素去除,且每次打印返回的順序並不和初始的一致。
2、使用set()
函數
fruit = set(("apple", "banana", "cherry")) # 請留意這個雙括號
print(fruit) # {'banana', 'apple', 'cherry'}
在使用
set()函數
創建集合時,一定要注意雙括號。
經過上述學習,我們已經知道如何創建集合。而兩個集合之間的計算有4種,分別是-
、|
、&
和^
。
先創建兩個集合,方便下面對其進行運算。
a = set('abcdefg')
b = set('abg')
print(a - b) # {'e', 'd', 'f', 'c'}
a - b 表示:集合 a 中包含而集合 b 中不包含的元素
print(a | b) # {'d', 'b', 'e', 'c', 'g', 'f', 'a'}
a | b 表示:集合 a 或集合 b 中包含的所有元素
print(a & b) # {'a', 'b', 'g'}
a & b 表示:集合 a 和集合 b 都包含了的元素
print(a ^ b) # {'e', 'c', 'd', 'f'}
a ^ b 表示:不同時包含集合 a 和集合 b 的元素
我們無法通過引用索引來訪問 set 中的項目,因為 set 是無序的,項目沒有索引。
但是可以使用 for 循環遍歷 set 項目,或者使用 in 關鍵字查詢集合中是否存在指定值。
實例
遍歷集合,並打印值:
fruit = {
'apple', 'banana', 'cherry'}
for key in fruit:
print(key)
檢查 set 中是否存在 “banana”
fruit = {
'apple', 'banana', 'cherry'}
print('banana' in fruit)
若輸出
True
,則表示指定值存在於該集合中;若輸出False
,則表示指定值不存在於該集合中。
1、print()
函數
從上述構造集合中,我們可以得知 print() 的作用就是打印輸出小括號() 裡的內容或值。
2、len()
函數
當我們想要獲取集合 set 的長度,即確定集合中有多少項,就要使用 len() 方法。
print(len(basket)) # 4
print(len(fruit)) # 3
我們注意到,在上述構造集合 basket 和 fruit 時,在 {} 中填入6個元素,當我們使用len()函數定長時,會發現其自動去除重復的元素,再返回。
3、type()
函數
print(type(basket)) # <class 'set'>
當我們使用 {} 或 set() 構造好集合時,對其使用 type() 函數,會輸出
set
,則表明這是一個集合。
4、del
函數
我們已經構造好 basket 和 fruit 這兩個集合,如果需要對其刪除則使用del函數。
fruit = set(("apple", "banana", "cherry")) # 請留意這個雙括號
del fruit
print(fruit) # NameError: name 'fruit' is not defined.
注意:使用完del()函數刪除集合後,如再用print()函數打印時,會報錯
NameError: name 'fruit' is not defined.
,意為fruit未被定義,說明已刪除。
1、add()
方法
add() 方法用於給集合添加元素,如果添加的元素在集合中已存在,則不執行任何操作。
語法
set.add(element)
參數值
實例
向 fruits 集合添加一個元素:
fruits = {
"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)
輸出結果:
{
'apple', 'banana', 'orange', 'cherry'}
如果該元素已存在,則 add() 方法就不會添加元素。
fruits = {
"apple", "banana", "cherry"}
fruits.add("apple")
print(fruits)
輸出結果:
{
'apple', 'banana', 'cherry'}
2、updata()
方法
update() 方法用於修改當前集合,可以添加新的元素或集合到當前集合中,如果添加的元素在集合中已存在,則該元素只會出現一次,重復的會忽略。
語法
set.update(set)
參數值
實例
合並兩個集合,重復元素只會出現一次:
x = {
"apple", "banana", "cherry"}
y = {
"google", "runoob", "apple"}
x.update(y)
print(x)
輸出結果:
{
'banana', 'apple', 'google', 'runoob', 'cherry'}
1、remove()
方法
remove() 方法用於移除集合中的指定元素。
該方法不同於 discard() 方法,因為 remove() 方法在移除一個不存在的元素時會發生錯誤,而 discard() 方法不會。
語法
set.remove(item)
參數值
實例
移除元素 banana:
fruits = {
"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits)
輸出結果:
{
'cherry', 'apple'}
2、discard()
方法
discard() 方法用於移除指定的集合元素。
該方法不同於 remove() 方法,因為 remove() 方法在移除一個不存在的元素時會發生錯誤,而 discard() 方法不會。
語法
set.discard(value)
參數值
實例
移除集合中的元素 banana:
fruits = {
"apple", "banana", "cherry"}
fruits.discard("banana")
print(fruits)
輸出結果:
{
'cherry', 'apple'}
3、pop()
方法
pop() 方法用於隨機移除一個元素。
語法
set.pop()
參數值
無參數值。
實例
隨機移除一個元素:
fruits = {
"apple", "banana", "cherry"}
fruits.pop()
print(fruits)
輸出結果:
{
'apple', 'banana'}
使用pop()方法刪除項目,但此方法將刪除最後一項。
同時請記住,集合set是無序的,因此您也不知道被刪除的是什麼項目。
1、clear()
方法
clear() 方法用於移除集合中的所有元素。
語法
set.clear()
參數值
無參數。
實例
移除 fruits 集合中的所有元素:
fruits = {
"apple", "banana", "cherry"}
fruits.clear()
print(fruits)
輸出結果:
set()
特別注意:clear() 功能是移除集合中所有元素,而del 功能是刪除集合。
所以,當對一個集合使用clear()方法或del函數,並分別對其使用print()函數打印輸出時,前者會返回一個空的集合即
set()
,而後者會報錯即NameError: name 'fruit' is not defined.
clear() 從內存刪除集合與清空集合,但內存地址不刪除,del() 則會從內存中刪除。
在Python中,有幾種方法可以連接兩個或多個集合。
可以使用 union() 方法返回包含兩個集合中所有項目的新集合,也可以使用 update() 方法將一個集合中的所有項目插入另一個集合中。
1、union()
方法
union() 方法返回兩個集合的並集,即包含了所有集合的元素,重復的元素只會出現一次。
語法
set.union(set1, set2 ...)
參數值
實例
合並兩個集合,重復元素只會出現一次:
set1 = {
'a', 'b', 'c'}
set2 = {
1, 2, 3, 'c'}
print(set1.union(set2))
輸出結果:
{
1, 2, 'b', 3, 'c', 'a'}
合並多個集合:
set1 = {
'a', 'b', 'c'}
set2 = {
1, 2, 3}
set3 = {
'A', 'B'}
print(set1.union(set2, set3))
輸出結果:
{
1, 2, 3, 'B', 'b', 'A', 'a', 'c'}
2、update()
方法
update() 方法在前面已經講解過,在此僅作實例演示。
實例
update() 方法將 set2 中的項目插入 set1 中:
set1 = {
'a', 'b', 'c'}
set2 = {
1, 2, 3}
set1.update(set2)
print(set1)
輸出結果:
{
1, 2, 3, 'b', 'a', 'c'}
注釋:
- union() 和 update() 都將排除任何重復項。
- 還有其他方法將兩個集合連接起來,並且僅保留重復項,或者永遠不保留重復項。
copy()
方法用於拷貝一個集合。
語法
set.copy()
參數值
無參數。
實例
復制 fruits 集合:
fruits = {
"apple", "banana", "cherry"}
print(fruits.copy())
輸出結果:
{
'apple', 'banana', 'cherry'}
isdisjoint()
方法用於判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。
語法
set.isdisjoint(set)
參數值
實例
判斷集合 y 中是否有包含 集合 x 的元素:
x = {
'a', 'b', 'c'}
y = {
'x', 'y', 'z'}
print(x.isdisjoint(y))
輸出結果:
True
注意:isdisjoint() 方法在判斷兩個集合是否包含相同元素時,如果不包含相同的元素則返回True,而包含相同的元素則返回False
1、intersection()
方法
intersection() 方法用於返回兩個或更多集合中都包含的元素,即交集。
語法
set.intersection(set1, set2 ... etc)
參數值
實例
返回一個新集合,該集合的元素既包含在集合 x 又包含在集合 y 中:
x = {
'a', 'b', 'c'}
y = {
'x', 'y', 'z', 'c'}
print(x.intersection(y))
輸出結果:
{
'c'}
計算多個集合的交集:
x = {
'a', 'b', 'c'}
y = {
'x', 'y', 'z', 'c'}
z = {
'c', 'a', 'd'}
print(x.intersection(y, z))
輸出結果:
{
'c'}
返回的集合僅包含兩個集合中都存在的項目,或者如果使用兩個以上的集合進行比較,則在所有集合中都存在。
2、intersection_update()
方法
intersection_update() 方法用於獲取兩個或更多集合中都重疊的元素,即計算交集。
語法
set.intersection_update(set1, set2 ... etc)
參數值
實例
移除 x 集合中不存在於 y 集合中的元素:
x = {
'a', 'b', 'c'} # y 集合不包含 a,被移除
y = {
'x', 'y', 'b', 'c'}
x.intersection_update(y)
print(x)
輸出結果:
{
'b', 'c'}
計算多個集合的並集:
x = {
'a', 'b', 'c'}
y = {
'c', 'd', 'e'}
z = {
'f', 'g', 'c'}
x.intersection_update(y, z)
print(x)
輸出結果:
{
'c'}
intersection_update() 方法不同於 intersection() 方法,因為 intersection() 方法是返回一個新的集合,而 intersection_update() 方法是在原始的集合上移除不重疊的元素。
1、issubset()
方法
issubset() 方法用於判斷集合的所有元素是否都包含在指定集合中,如果是則返回 True,否則返回 False。
語法
set.issubset(set)
參數值
實例
如果集合 y 中存在集合 x 中的所有項目,則返回 True:
x = {
'a', 'b', 'c'}
y = {
'x', 'y', 'z', 'a', 'b', 'c'}
print(x.issubset(y))
輸出結果:
True
如果沒有全部包含返回 False:
x = {
'a', 'b', 'c'}
y = {
'x', 'y', 'z', 'a'}
print(x.issubset(y))
輸出結果:
False
注意:使用
x.issubset(y)
時,簡單地說,當集合 x 中所有項目都存在於集合 y 中時,返回True,反之(集合 x 中有一個或多個都不存在於集合 y 中,就返回 False)。
2、issuperset()
方法
issuperset() 方法用於判斷指定集合的所有元素是否都包含在原始的集合中,如果是則返回 True,否則返回 False。
語法
set.issuperset(set)
參數值
實例
判斷集合 y 的所有元素是否都包含在集合 x 中:
x = {
'a', 'b', 'c', 'x', 'y', 'z'}
y = {
'a', 'b', 'c'}
print(x.issuperset(y))
輸出結果:
True
如果沒有全部包含返回 False:
x = {
'a', 'x', 'y', 'z'}
y = {
'a', 'b', 'c'}
print(x.issuperset(y))
輸出結果:
False
issuperset() 和 issubset() 類似,如果全都包含就返回True,反之(有一個或多個未包含)就返回False。
1、difference()
方法
difference() 方法用於返回集合的差集,即返回的集合元素包含在第一個集合中,但不包含在第二個集合(方法的參數)中。
語法
set.difference(set)
參數值
實例
返回一個集合,元素包含在集合 x ,但不在集合 y :
x = {
'a', 'b', 'c', 'x', 'y', 'z'}
y = {
'a', 'b', 'c'}
print(x.difference(y))
輸出結果:
{
'x', 'y', 'z'}
2、difference_update()
方法
difference_update() 方法用於移除兩個集合中都存在的元素。
語法
set.difference_update(set)
參數值
實例
移除兩個集合都包含的元素:
x = {
'a', 'b', 'c', 'x', 'y', 'z'}
y = {
'a', 'b', 'c'}
x.difference_update(y)
print(x)
輸出結果:
{
'x', 'z', 'y'}
difference_update() 方法與 difference() 方法的區別在於 difference() 方法返回一個移除相同元素的新集合,而 difference_update() 方法是直接在原來的集合中移除元素,沒有返回值。
1、symmetric_difference()
方法
symmetric_difference() 方法返回兩個集合中不重復的元素集合,即會移除兩個集合中都存在的元素。
語法
set.symmetric_difference(set)
參數值
實例
返回兩個集合組成的新集合,但會移除兩個集合的重復元素:
x = {
'a', 'b', 'c', 'x', 'y', 'z'}
y = {
'a', 'b', 'c', 'Q', 'W', 'E'}
print(x.symmetric_difference(y))
輸出結果:
{
'x', 'Q', 'z', 'E', 'y', 'W'}
2、symmetric_difference_update()
方法
symmetric_difference_update() 方法移除當前集合中在另外一個指定集合相同的元素,並將另外一個指定集合中不同的元素插入到當前集合中。
語法
set.symmetric_difference_update(set)
參數值
實例
在原始集合 x 中移除與 y 集合中的重復元素,並將不重復的元素插入到集合 x 中:
x = {
'a', 'b', 'c', 'x', 'y', 'z'}
y = {
'a', 'b', 'c', 'Q', 'W', 'E'}
x.symmetric_difference_update(y)
print(x)
輸出結果:
{
'z', 'Q', 'x', 'W', 'E', 'y'}
以上就是本文的全部內容啦!如果對您有幫助,麻煩點贊啦!收藏啦!歡迎各位評論區留言!!!
最後編輯於:2022/7/23 15:43
Bubble Sort: It is an algorith