日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python入門實踐13 | 集合(Set)

系統(tǒng) 2089 0

Python入門實踐13 ——集合(Set)


集合(Set)
一、目標(biāo)

1、掌握集合是存放一組沒有順序、不可可重復(fù)的、可以改變的數(shù)據(jù)的容器。
2、掌握集合的操作。

二、要點

1、 集合(set)

可以存放一組沒有順序、不可可重復(fù)的、可以改變的數(shù)據(jù)。
所以一般情況下集合常用的兩個場景是:去重(如:列表去重);關(guān)系測試(如:取交集、取并集、取差集等)。

  • 集合可以通過可迭代對象(字符串、元組、列表等)進行創(chuàng)建;
  • 集合中的元素不可重復(fù);
  • 集合中的元素?zé)o序排列。

2、創(chuàng)建集合
集合可以使用大括號 { } 或者set(iterable)方法創(chuàng)建,參數(shù)iterable為可迭代對象。
注意:創(chuàng)建一個空集合必須用 set() 而不是 { },因為 { } 是用來創(chuàng)建一個空字典。
如:
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'};

s1 = set('好好學(xué)習(xí)天天想上') # 將字符串分解為單個字符,作為集合的元素創(chuàng)建集合

s2 = set(('好好', '學(xué)習(xí)', '天天', '想上')) # 將元組分解為單個元素,作為集合元素創(chuàng)建集合

s3 = set(['好好', '學(xué)習(xí)', '天天', '想上']) # 將列表分解為單個元素,作為集合元素創(chuàng)建集合
3、集合操作
1)、添加元素

(1)、添加單個元素s.add(element)
語法格式如下:
s.add(element);
參數(shù)element為集合允許添加的元素(例如數(shù)字、字符串、元組等)。
如:
s1.add('4')

(2)、添加多個元素s.update(iterable)
語法格式如下:
s.update(iterable)
參數(shù)iterable為可迭代對象,可以是列表,元組,字典等。

如:
s2.update(['4','5','6']) ;

2)、移除元素:
(1)、s.remove( element)
將元素 element 從集合 s 中移除,如果元素不存在,則會發(fā)生錯誤 。
(2)、s.discard( element ):
將元素 element 從集合 s 中移除,如果元素不存在,不會發(fā)生錯誤,但什么也不做 。
(3)、s.pop():
從集合中隨機刪除一個元素,并返回刪除的元素 。

3)、計算集合中元素的個數(shù)
len(s):計算集合 s 元素個數(shù)。
4)、清空集合
s.clear():清空集合s中的元素
5)、移除集合
del s:移除集合s
6)、判斷元素是否在集合中
x in s :判斷元素 x是否在集合 s中存在,存在返回 True,不存在返回 False。
7)、交集/并集/補集/差集


交集/并集/補集/差集
操作 函數(shù) 說明
交集 & s1.intersection(s2)不更新s1 s1.intersection_update(s2)更新s1 獲取兩個集合中共有元素
并集 | s1.union(s2) 獲取兩個集合去除重復(fù)元素后的全部元素
補集 - s1.difference(s2) 不更新s1 s1.difference_update(s2) 更新s1 獲取當(dāng)前集合去除與另一集合交集元素后的全部元素。
差集 ^ s1.ymmetric_difference(s2) 不更新s1 s1.symmetric_difference_update(s2) 更新s1 獲取兩個集合去除交集元素后的全部元素。

8)、成員關(guān)系
Python中提供了一些方法,

  • 判斷一個集合中是否包含某一元素;
  • 判斷一個集合是否另一個集合的子集或超集。
  • 判斷一個集合與另一個集合是否沒有交集。
子集或超集
操作 描述
In 來判斷操作符前方的值是否被后方的序列包含(成員關(guān)系)
not in 判斷操作符前方的值是否未被后方的序列包含(非成員關(guān)系)。
isdisjoint(set) 可以判斷集合是否與指定集合不存在交集,參數(shù)set為集合;如果成立返回結(jié)果為True,否則為False。
issubset(set) 可以判斷集合是否指定集合的子集,參數(shù)set為集合;如果成立返回結(jié)果為True,否則為False。
issuperset(set) 可以判斷集合是否指定集合的超集,參數(shù)set為集合;如果成立返回結(jié)果為True,否則為False。

9)、復(fù)制集合

使用copy()方法能夠?qū)线M行復(fù)制。

4、集合內(nèi)置方法

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

1、新建新建ex13.py文件。
2、錄入實例中代碼。
3、運行。

四、實例(Python 3.0+)
          
            #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'jungle'
__mtime__ = '2019-08-28'
"""
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket);
s1 = set('好好學(xué)習(xí)天天想上') ; # 將字符串分解為單個字符,作為集合的元素創(chuàng)建集合
s2 = set(('好好', '學(xué)習(xí)', '天天', '想上'));  # 將元組分解為單個元素,作為集合元素創(chuàng)建集合
s3 = set(['好好', '學(xué)習(xí)', '天天', '想上']) ; # 將列表分解為單個元素,作為集合元素創(chuàng)建集合

print (s1);  # 顯示輸出結(jié)果為:{'好', '習(xí)', '上', '天', '想', '學(xué)'}
print (s2) ; # 顯示輸出結(jié)果為:{'好好', '想上', '學(xué)習(xí)', '天天'}
print (s3);  # 顯示輸出結(jié)果為:{'好好', '想上', '學(xué)習(xí)', '天天'}


# 添加單個元素
s1.add('4');

# 添加多個元素
s2.update(['4','5','6']);  # 添加列表到集合,列表元素會被分解為單個元素后添加到集合
s3.update('de') ; # 添加字符串到集合,字符串會被分解為單個元素后添加到集合

# 顯示輸出
print (s1) ;
print (s2) ;
print (s3) ;

# 創(chuàng)建集合
s1 = set(['Python','Java','C','C++','C#'])
s2 = set(['Python','Java','C','C++','C#'])

# 刪除元素
s1.remove('C++');
s2.discard('C++');
print (s1) ;
print (s2) ;
print (s1.pop()) # 取出集合元素

# 創(chuàng)建集合
s1 = set('Python')
s2 = set('PyCharm')

# 交集操作:獲取兩個集合中共有元素。
print (s1 & s2)  # 顯示輸出結(jié)果為:{'y', 'P', 'h'}
print (s1.intersection(s2))  # 顯示輸出結(jié)果為:{'y', 'P', 'h'}

# 并集操作:獲取兩個集合去除重復(fù)元素后的全部元素。
print (s1 | s2)  # 顯示輸出結(jié)果為:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'}
print (s1.union(s2))  # 顯示輸出結(jié)果為:{'y', 'a', 'C', 'o', 'P', 'n', 't', 'm', 'r', 'h'}

# 補集操作:獲取當(dāng)前集合去除與另一集合交集元素后的全部元素。
print (s1 - s2)  # 顯示輸出結(jié)果為:{'o', 't', 'n'}
print (s1.difference(s2))  # 顯示輸出結(jié)果為:{'o', 't', 'n'}
print (s2 - s1)  # 顯示輸出結(jié)果為:{'m', 'a', 'r', 'C'}
print (s2.difference(s1))  # 顯示輸出結(jié)果為:{'m', 'a', 'r', 'C'}

# 差集操作:獲取兩個集合去除交集元素后的全部元素。
print (s1 ^ s2)  # 顯示輸出結(jié)果為:{'o', 't', 'm', 'a', 'r', 'n', 'C'}
print (s1.symmetric_difference(s2))  # 顯示輸出結(jié)果為:{'o', 't', 'm', 'a', 'r', 'n', 'C'}

s1 = set('好好學(xué)習(xí)')
s2 = set('天天想上')
s3 = set('好好學(xué)習(xí)天天想上')

print ('好' in s1) # 顯示輸出結(jié)果為:True
print ('好' not in s2) # 顯示輸出結(jié)果為:True
print (s1.isdisjoint(s2))  # 顯示輸出結(jié)果為:True
print (s1.issubset(s3))  # 顯示輸出結(jié)果為:True
print (s3.issuperset(s1))  # 顯示輸出結(jié)果為:True

a = set('小樓一夜聽春語')  # 創(chuàng)建集合存入變量a
b = a  # 創(chuàng)建變量b引用變量a的集合
c = a.copy()  # 創(chuàng)建變量c復(fù)制變量a的值
print (a)  # 顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}
print (b)  # 顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}
print (c)  # 顯示輸出結(jié)果為:{'春', '夜', '樓', '聽', '語', '小', '一'}

print(dir(set));

          
        
五、運行輸出:
          
            {'banana', 'pear', 'orange', 'apple'}
{'學(xué)', '上', '想', '天', '好', '習(xí)'}
{'天天', '想上', '學(xué)習(xí)', '好好'}
{'天天', '想上', '學(xué)習(xí)', '好好'}
{'學(xué)', '上', '想', '天', '好', '習(xí)', '4'}
{'天天', '想上', '學(xué)習(xí)', '5', '6', '4', '好好'}
{'天天', '想上', 'e', '學(xué)習(xí)', 'd', '好好'}
{'C', 'Java', 'Python', 'C#'}
{'C', 'Java', 'Python', 'C#'}
C
{'y', 'h', 'P'}
{'y', 'h', 'P'}
{'o', 'r', 'h', 'm', 'C', 'n', 't', 'P', 'a', 'y'}
{'o', 'r', 'h', 'm', 'C', 'n', 't', 'P', 'a', 'y'}
{'t', 'o', 'n'}
{'t', 'o', 'n'}
{'m', 'C', 'a', 'r'}
{'m', 'C', 'a', 'r'}
{'o', 'r', 'm', 'C', 'n', 't', 'a'}
{'o', 'r', 'm', 'C', 'n', 't', 'a'}
True
True
True
True
True
{'樓', '一', '小', '夜', '聽', '語', '春'}
{'樓', '一', '小', '夜', '聽', '語', '春'}
{'聽', '春', '樓', '一', '語', '小', '夜'}
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']


          
        
注:

1、撰寫內(nèi)容來源于個人收集的文獻,屬學(xué)術(shù)探究范疇。
2、版權(quán)屬于時進軍個人,轉(zhuǎn)載需注明。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 利辛县| 京山县| 广州市| 团风县| 兴城市| 松江区| 永城市| 合阳县| 昌乐县| 安阳市| 曲周县| 泸定县| 沭阳县| 湄潭县| 武川县| 建阳市| 和静县| 宁化县| 景洪市| 龙泉市| 招远市| 金溪县| 乳山市| 楚雄市| 微博| 扎鲁特旗| 章丘市| 淮南市| 保德县| 台州市| 肥城市| 二连浩特市| 龙井市| 右玉县| 福贡县| 德化县| 白朗县| 华安县| 龙陵县| 九江市| 美姑县|