欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3 集合set入門基礎(chǔ)

 更新時間:2020年02月10日 15:12:28   投稿:mdxy-dxy  
集合也也也也是python內(nèi)置的一種數(shù)據(jù)結(jié)構(gòu),它是一個無序且元素不重復(fù)的序列。這里有兩個關(guān)鍵詞一個是無序,這一點和字典是一樣的,另一個關(guān)鍵詞是元素不重復(fù),這一點和字典的key(鍵)是一樣的

集合(set)是一個無序的不重復(fù)元素序列。

可以使用大括號 { } 或者 set() 函數(shù)創(chuàng)建集合,注意:創(chuàng)建一個空集合必須用 set() 而不是 { },因為 { } 是用來創(chuàng)建一個空字典。

集合、是字典的表親
{}并不是字典的特權(quán)

集合的特點:

1 具有唯一性
2 不支持索引
3 與字典相同,也是無序的

創(chuàng)建格式:

parame = {value01,value02,...}
或者
set(value)

創(chuàng)建方法

num1 = {1,2,3,4}
num2 = set(['q','w','e','r'])

print(num1,num2)

num3 = [1,2,3,4,2,4,2,1]
temp = num3.copy()
temp = set(temp)
print(temp)

實例

>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)           # 這里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket         # 快速判斷元素是否在集合內(nèi)
True
>>> 'crabgrass' in basket
False
 
>>> # 下面展示兩個集合間的運算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                 
{'a', 'r', 'b', 'c', 'd'}
>>> a - b               # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b               # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b               # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b               # 不同時包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}

類似列表推導(dǎo)式,同樣集合支持集合推導(dǎo)式(Set comprehension):

>>>a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

集合的基本操作

1、添加元素

語法格式如下:

s.add( x )

將元素 x 添加到集合 s 中,如果元素已存在,則不進(jìn)行任何操作。

>>>thisset = set(("Baidu", "jb51", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Facebook', 'Taobao', 'Baidu', 'jb51'}

輸出的內(nèi)容都是隨機(jī)的沒有排序

還有一個方法,也可以添加元素,且參數(shù)可以是列表,元組,字典等,語法格式如下:

s.update( x )

x 可以有多個,用逗號分開。

>>>thisset = set(("Baidu", "Jb51", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Baidu', 'Taobao', 'Jb51'}
>>> thisset.update([1,4],[5,6]) 
>>> print(thisset)
{1, 3, 4, 5, 6, 'Baidu', 'Taobao', 'Jb51'}
>>>

2、移除元素

語法格式如下:

s.remove( x )

將元素 x 從集合 s 中移除,如果元素不存在,則會發(fā)生錯誤。

實例(Python 3.0+)

>>>thisset = set(("Baidu", "Jb51", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Baidu', 'Jb51'}
>>> thisset.remove("Facebook")  # 不存在會發(fā)生錯誤
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>

此外還有一個方法也是移除集合中的元素,且如果元素不存在,不會發(fā)生錯誤。格式如下所示:

s.discard( x )

實例(Python 3.0+)

>>>thisset = set(("Baidu", "Jb51", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不會發(fā)生錯誤
>>> print(thisset)
{'Taobao', 'Baidu', 'Jb51'}

我們也可以設(shè)置隨機(jī)刪除集合中的一個元素,語法格式如下:

s.pop()

腳本模式實例(Python 3.0+)

thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))
x = thisset.pop()
 
print(x)

輸出結(jié)果:

$ python3 test.py

Jb51

多次執(zhí)行測試結(jié)果都不一樣。

set 集合的 pop 方法會對集合進(jìn)行無序的排列,然后將這個無序排列集合的左面第一個元素進(jìn)行刪除。

3、計算集合元素個數(shù)

語法格式如下:

len(s)

計算集合 s 元素個數(shù)。

實例(Python 3.0+)

>>>thisset = set(("Baidu", "Jb51", "Taobao"))
>>> len(thisset)
3

4、清空集合

語法格式如下:

s.clear()

清空集合 s。

實例(Python 3.0+)

>>>thisset = set(("Baidu", "Jb51", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

5、判斷元素是否在集合中存在

語法格式如下:

x in s

判斷元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

實例(Python 3.0+)

>>>thisset = set(("Baidu", "Jb51", "Taobao"))
>>> "Jb51" in thisset
True
>>> "Facebook" in thisset
False
>>>

集合內(nèi)置方法完整列表

方法 描述
add() 為集合添加元素
clear() 移除集合中的所有元素
copy() 拷貝一個集合
difference() 返回多個集合的差集
difference_update() 移除集合中的元素,該元素在指定的集合也存在。
discard() 刪除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint() 判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。
issubset() 判斷指定集合是否為該方法參數(shù)集合的子集。
issuperset() 判斷該方法的參數(shù)集合是否為指定集合的子集
pop() 隨機(jī)移除元素
remove() 移除指定元素
symmetric_difference() 返回兩個集合中不重復(fù)的元素集合。
symmetric_difference_update() 移除當(dāng)前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當(dāng)前集合中。
union() 返回兩個集合的并集
update() 給集合添加元素

下面繼續(xù)為大家補(bǔ)充一些實例

s.update( "字符串" ) 與 s.update( {"字符串"} ) 含義不同:

s.update( {"字符串"} ) 將字符串添加到集合中,有重復(fù)的會忽略。
s.update( "字符串" ) 將字符串拆分單個字符后,然后再一個個添加到集合中,有重復(fù)的會忽略。

>>> thisset = set(("Baidu", "Jb51", "Taobao"))
>>> print(thisset)
{'Baidu', 'Jb51', 'Taobao'}
>>> thisset.update({"Facebook"})
>>> print(thisset) 
{'Baidu', 'Jb51', 'Taobao', 'Facebook'}
>>> thisset.update("Yahoo")
>>> print(thisset)
{'h', 'o', 'Facebook', 'Baidu', 'Y', 'Jb51', 'Taobao', 'a'}
>>>

set() 中參數(shù)注意事項

1.創(chuàng)建一個含有一個元素的集合

>>> my_set = set(('apple',))
>>> my_set
{'apple'}

2.創(chuàng)建一個含有多個元素的集合

>>> my_set = set(('apple','pear','banana'))
>>> my_set
{'apple', 'banana', 'pear'}

3.如無必要,不要寫成如下形式

>>> my_set = set('apple')
>>> my_set
{'l', 'e', 'p', 'a'}
>>> my_set1 = set(('apple'))
>>> my_set1
{'l', 'e', 'p', 'a'}

集合用 set.pop() 方法刪除元素的不一樣的感想如下:

1、對于 python 中列表 list、tuple 類型中的元素,轉(zhuǎn)換集合是,會去掉重復(fù)的元素如下:

>>> list = [1,1,2,3,4,5,3,1,4,6,5]
>>> set(list)
{1, 2, 3, 4, 5, 6}
>>> tuple = (2,3,5,6,3,5,2,5)
>>> set(tuple)
{2, 3, 5, 6}

2、集合對 list 和 tuple 具有排序(升序),舉例如下:

>>> set([9,4,5,2,6,7,1,8])
{1, 2, 4, 5, 6, 7, 8, 9}
>>> set([9,4,5,2,6,7,1,8])
{1, 2, 4, 5, 6, 7, 8, 9}

3、集合的 set.pop() 的不同認(rèn)為

有人認(rèn)為 set.pop() 是隨機(jī)刪除集合中的一個元素、我在這里說句非也!對于是字典和字符轉(zhuǎn)換的集合是隨機(jī)刪除元素的。當(dāng)集合是由列表和元組組成時、set.pop() 是從左邊刪除元素的如下:

列表實例:

set1 = set([9,4,5,2,6,7,1,8])
print(set1)
print(set1.pop())
print(set1)

輸出結(jié)果:

{1, 2, 4, 5, 6, 7, 8, 9}
1
{2, 4, 5, 6, 7, 8, 9}

元組實例:

set1 = set((6,3,1,7,2,9,8,0))
print(set1)
print(set1.pop())
print(set1)

輸出結(jié)果:

{0, 1, 2, 3, 6, 7, 8, 9}
0
{1, 2, 3, 6, 7, 8, 9}

>>> thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))
>>> y=set({'python'})
>>> print(y.union(thisset))
{'python', 'Taobao', 'Baidu', 'Facebook', 'Jb51'}

輸出結(jié)果:

{'python', 'Baidu', 'Taobao', 'Facebook', 'Jb51'}

y 的集合里此時只含有一個元素 'python',而如果不加花括號時,y 的集合里含有'p','y','t','h','o','n'五個元素。

>>> thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))
>>> y=set('python')
>>> print(y.union(thisset))
{'p', 'o', 'y', 'Taobao', 'h', 'Baidu', 'Facebook', 'Jb51', 'n', 't'}

也可以使用括號:

thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))
y=set(('python','love'))
print(y.union(thisset))

輸出結(jié)果:

{'Facebook', 'Jb51', 'Taobao', 'python', 'love', 'Baidu'}

但是當(dāng) y 的集合里只有一個字符串時,結(jié)果與不加花括號一樣。

列表的 sort 方法可以實現(xiàn)就地排序(無需創(chuàng)建新對象,字符串按首字母進(jìn)行排序):

a=[1, 51, 31, -3, 10]
a.sort()
print(a)

s=['a','ab','3e','z']
s.sort()
print(s)

輸出:

[-3, 1, 10, 31, 51]
['3e', 'a', 'ab', 'z']

按集合中的字符長度進(jìn)行排序:

a=[1, 51, 31, -3, 10]
a.sort()
print(a)

b=['a','ab','3ae','zaaa','1']
b.sort()
print(b)

c=['a','ab','3ae','zaaa','1']
c.sort(key=len)
print(c)

輸出:

[-3, 1, 10, 31, 51]
['1', '3ae', 'a', 'ab', 'zaaa']
['a', '1', 'ab', '3ae', 'zaaa']

下面是其他網(wǎng)友的補(bǔ)充圖文

集合也也也也是python內(nèi)置的一種數(shù)據(jù)結(jié)構(gòu),它是一個無序且元素不重復(fù)的序列。這里有兩個關(guān)鍵詞一個是無序,這一點和字典是一樣的,另一個關(guān)鍵詞是元素不重復(fù),這一點和字典的key(鍵)是一樣的。這么看來集合和字典還真像,事實上他們長的也很像:

集合和字典一樣也是用{}包起來的,那么問題來了,如果只寫一個{}那它是集合還是字典呢?

{}里沒有元素創(chuàng)建的是字典,那么問題又來了,空集合又該怎么創(chuàng)建呢?我們可以使用set()函數(shù)創(chuàng)建。既然集合已經(jīng)創(chuàng)建出來了,接著就看看集合的一些用法吧。

1.往集合里增加元素:

集合的add函數(shù)可以往集合里添加一個元素,update可以更新一個或多個元素,其參數(shù)可以是列表、集合等等。

2.刪除集合里的元素。

要刪除集合中的元素方法還挺多的啊,不過那個pop函數(shù)是認(rèn)真的嗎?隨機(jī)移除元素也太隨意了吧...

由于集合是無序的,所以沒辦法用下標(biāo)來獲取集合的元素,也沒辦法像字典一樣通過key來獲取值。這就尷尬了??磥砑暇拖聃饕粯又荒艽鏀?shù)據(jù)不能取數(shù)據(jù)。

3.集合的運算

交集和并集很好理解,差集是個相對的概念,集合1相對集合2差集和集合2相對集合1的差集是不一樣的,需要特別注意。所以對稱差集可以理解為非交集元素組成的那部分。

4.集合的包含關(guān)系

集合的幾種關(guān)系:相交/不相交 ,包含/不包含(相對而言)。isdisjoint函數(shù)是判斷不相交的,不相交才返回True。

相關(guān)文章

  • Flask-WTF表單的使用方法

    Flask-WTF表單的使用方法

    這篇文章主要介紹了Flask-WTF表單的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python代碼中如何讀取鍵盤錄入的值

    Python代碼中如何讀取鍵盤錄入的值

    在本篇文章里小編給大家分享的是關(guān)于Python代碼中讀取鍵盤錄入值的方法,需要的朋友們可以參考下。
    2020-05-05
  • TensorFlow進(jìn)階學(xué)習(xí)定制模型和訓(xùn)練算法

    TensorFlow進(jìn)階學(xué)習(xí)定制模型和訓(xùn)練算法

    本文將為你提供關(guān)于 TensorFlow 的中級知識,你將學(xué)習(xí)如何通過子類化構(gòu)建自定義的神經(jīng)網(wǎng)絡(luò)層,以及如何自定義訓(xùn)練算法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計示例

    Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計示例

    這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球中藍(lán)紅球分析統(tǒng)計,結(jié)合實例形式較為詳細(xì)的分析了Python針對雙色球藍(lán)紅球中獎數(shù)據(jù)分析的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 在Python的web框架中編寫創(chuàng)建日志的程序的教程

    在Python的web框架中編寫創(chuàng)建日志的程序的教程

    這篇文章主要介紹了在Python的web框架中編寫創(chuàng)建日志的程序的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • 為python設(shè)置socket代理的方法

    為python設(shè)置socket代理的方法

    這篇文章主要介紹了為python設(shè)置socket代理的方法,需要的朋友可以參考下
    2015-01-01
  • python GUI圖形化編程wxpython的使用

    python GUI圖形化編程wxpython的使用

    這篇文章主要介紹了python GUI圖形化編程wxpython的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • pytest多文件執(zhí)行順序控制詳解

    pytest多文件執(zhí)行順序控制詳解

    默認(rèn)情況下pytest測試用例的執(zhí)行順序是先按照外層后內(nèi)層(目錄下的文件),同層級的包或文件、根據(jù)名稱、按照ascii碼升序執(zhí)行,文件內(nèi)的用例根據(jù)先后順序執(zhí)行,這篇文章主要給大家介紹了關(guān)于pytest多文件執(zhí)行順序控制的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 利用Python自動化識別與刪除Excel表格空白行和列

    利用Python自動化識別與刪除Excel表格空白行和列

    在處理Excel數(shù)據(jù)時,經(jīng)常會遇到含有空白行和空白列的情況,本文將介紹如何利用Python來自動化識別并刪除Excel文件中的空白行和列,從而確保數(shù)據(jù)集的整潔性,為后續(xù)的數(shù)據(jù)分析工作奠定堅實的基礎(chǔ),需要的朋友可以參考下
    2024-05-05
  • Python實現(xiàn)電腦喚醒后自動拍照截屏并發(fā)郵件通知

    Python實現(xiàn)電腦喚醒后自動拍照截屏并發(fā)郵件通知

    這篇文章主要為大家詳細(xì)介紹了Python如何實現(xiàn)電腦喚醒后自動拍照截屏并發(fā)郵件通知的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01

最新評論