Python中的set()函數(shù)是用來創(chuàng)建一個無序的、不重復(fù)的元素集合。它可以用于去除列表、元組或字符串中的重復(fù)元素,也可以用于數(shù)學(xué)中的集合運算,如并集、交集、差集等。
_x000D_set()函數(shù)的語法如下:
_x000D_`python
_x000D_set(iterable)
_x000D_ _x000D_其中,iterable是可迭代對象,如列表、元組或字符串。
_x000D_下面,我們來詳細了解一下set()函數(shù)的用法。
_x000D_## 去除重復(fù)元素
_x000D_set()函數(shù)最常見的用法是去除列表、元組或字符串中的重復(fù)元素。例如,我們有一個列表,其中包含了一些重復(fù)的元素:
_x000D_`python
_x000D_lst = [1, 2, 3, 2, 4, 1, 5, 6, 3]
_x000D_ _x000D_我們可以使用set()函數(shù)將其轉(zhuǎn)換為一個集合,從而去除重復(fù)元素:
_x000D_`python
_x000D_s = set(lst)
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_{1, 2, 3, 4, 5, 6}
_x000D_ _x000D_可以看到,集合中只保留了列表中的不重復(fù)元素。
_x000D_同樣的,我們也可以對元組或字符串進行去重操作:
_x000D_`python
_x000D_t = (1, 2, 3, 2, 4, 1, 5, 6, 3)
_x000D_s = set(t)
_x000D_print(s)
_x000D_str = "hello world"
_x000D_s = set(str)
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果分別為:
_x000D_ _x000D_{1, 2, 3, 4, 5, 6}
_x000D_{'r', 'd', 'h', 'e', 'o', 'l', 'w', ' '}
_x000D_ _x000D_## 集合運算
_x000D_除了去重,set()函數(shù)還可以用于數(shù)學(xué)中的集合運算,如并集、交集、差集等。
_x000D_### 并集
_x000D_兩個集合的并集是指包含兩個集合中所有元素的集合。我們可以使用union()方法或|運算符來計算兩個集合的并集。
_x000D_`python
_x000D_s1 = {1, 2, 3}
_x000D_s2 = {3, 4, 5}
_x000D_s3 = s1.union(s2)
_x000D_s4 = s1 | s2
_x000D_print(s3)
_x000D_print(s4)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_{1, 2, 3, 4, 5}
_x000D_{1, 2, 3, 4, 5}
_x000D_ _x000D_### 交集
_x000D_兩個集合的交集是指包含兩個集合有元素的集合。我們可以使用intersection()方法或&運算符來計算兩個集合的交集。
_x000D_`python
_x000D_s1 = {1, 2, 3}
_x000D_s2 = {3, 4, 5}
_x000D_s3 = s1.intersection(s2)
_x000D_s4 = s1 & s2
_x000D_print(s3)
_x000D_print(s4)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_{3}
_x000D_{3}
_x000D_ _x000D_### 差集
_x000D_兩個集合的差集是指包含屬于第一個集合而不屬于第二個集合的元素的集合。我們可以使用difference()方法或-運算符來計算兩個集合的差集。
_x000D_`python
_x000D_s1 = {1, 2, 3}
_x000D_s2 = {3, 4, 5}
_x000D_s3 = s1.difference(s2)
_x000D_s4 = s1 - s2
_x000D_print(s3)
_x000D_print(s4)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_{1, 2}
_x000D_{1, 2}
_x000D_ _x000D_## 相關(guān)問答
_x000D_### 1. set()函數(shù)的返回值是什么類型?
_x000D_set()函數(shù)返回的是一個集合類型的對象。
_x000D_### 2. set()函數(shù)去重后的元素順序是否與原列表、元組或字符串的順序一致?
_x000D_set()函數(shù)去重后的元素是無序的,順序與原列表、元組或字符串的順序不一定一致。
_x000D_### 3. set()函數(shù)能否去重一個嵌套列表中的元素?
_x000D_set()函數(shù)只能去重一維列表、元組或字符串中的元素,無法去重嵌套列表中的元素。如果需要去重嵌套列表中的元素,可以使用列表推導(dǎo)式實現(xiàn)。
_x000D_### 4. 如何判斷一個元素是否在集合中?
_x000D_可以使用in關(guān)鍵字來判斷一個元素是否在集合中。例如:
_x000D_`python
_x000D_s = {1, 2, 3}
_x000D_if 1 in s:
_x000D_print("1在集合中")
_x000D_else:
_x000D_print("1不在集合中")
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_1在集合中
_x000D_ _x000D_### 5. 如何向集合中添加元素?
_x000D_可以使用add()方法向集合中添加一個元素,或使用update()方法向集合中添加多個元素。例如:
_x000D_`python
_x000D_s = {1, 2, 3}
_x000D_s.add(4)
_x000D_print(s)
_x000D_s.update([5, 6])
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_{1, 2, 3, 4}
_x000D_{1, 2, 3, 4, 5, 6}
_x000D_ _x000D_### 6. 如何從集合中刪除元素?
_x000D_可以使用remove()方法或discard()方法從集合中刪除一個元素,或使用pop()方法隨機刪除一個元素。例如:
_x000D_`python
_x000D_s = {1, 2, 3, 4, 5}
_x000D_s.remove(3)
_x000D_print(s)
_x000D_s.discard(6)
_x000D_print(s)
_x000D_x = s.pop()
_x000D_print(x)
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_{1, 2, 4, 5}
_x000D_{1, 2, 4, 5}
_x000D_{2, 4, 5}
_x000D_ _x000D_### 7. 如何清空一個集合?
_x000D_可以使用clear()方法清空一個集合。例如:
_x000D_`python
_x000D_s = {1, 2, 3}
_x000D_s.clear()
_x000D_print(s)
_x000D_ _x000D_輸出結(jié)果為:
_x000D_ _x000D_set()
_x000D_ _x000D_### 8. 集合和列表有什么區(qū)別?
_x000D_集合是無序的、不重復(fù)的元素集合,而列表是有序的、可重復(fù)的元素序列。集合的主要作用是去重和集合運算,而列表的主要作用是存儲一組有序的元素。
_x000D_