最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python集合的基礎(chǔ)操作

 更新時間:2021年11月01日 10:44:17   作者:一碗周  
這篇文章主要介紹了Python集合的基礎(chǔ)操作,Python中的集合和數(shù)學(xué)上的集合基本是沒有區(qū)別的,是無序的,即不可以使用索引訪問的,集合中是不能出現(xiàn)重復(fù)元素的。想著情了解具體內(nèi)容的小伙伴可以參考下面文章內(nèi)容

1、集合

Python中的集合和數(shù)學(xué)上的集合基本是沒有區(qū)別的,是無序的,即不可以使用索引訪問的,集合中是不能出現(xiàn)重復(fù)元素的。

2、創(chuàng)建集合

Python中創(chuàng)建集合使用花括號{}字面量的方式,或者使用set()來創(chuàng)建一個集合。使用{}中必須至少含一個元素,創(chuàng)建空集合不能使用{},這樣創(chuàng)建的是空字典,應(yīng)該使用set()的方式來創(chuàng)建一個集合。

# 使用字面量方法創(chuàng)建集合
set1 = {"Hello", "World"}
print(type(set1), set1)  # <class 'set'> {'World', 'Hello'}
# print(set1[1]) # TypeError: 'set' object does not support indexing

# 使用set()的方式創(chuàng)建
set2 = set("hello")  # {'l', 'o', 'h', 'e'}集合會去掉重復(fù)的元素,即"l"
print(set2)

# 創(chuàng)建空集合
set3 = {}
set4 = set()
print(type(set3), type(set4))  # <class 'dict'>字典 <class 'set'>

list1 = [1, 2, 3, 4, 3, 5, 1, 3]
# 將列表轉(zhuǎn)換為集合
set6 = set(list1)
print(type(set6), set6)  # <class 'set'> {1, 2, 3, 4, 5}

# 使用生成列生成列表
set5 = {num for num in range(20) if num % 3 == 0}
print(set5)  # {0, 3, 6, 9, 12, 15, 18}

# 遍歷循環(huán)
for ch in set5:
    print(ch)

注意:集合中的元素為不可變的類型,如整數(shù)、浮點(diǎn)、字符串、元組等,也就是說可變類型不能作為元組的元素,集合本身也是可變類型,所以集合不能夠作為集合中的元素。

3、集合的運(yùn)算

集合數(shù)據(jù)類型擁有超多的運(yùn)算符,包括成員運(yùn)算、交集運(yùn)算、并集運(yùn)算、差集運(yùn)算、比較運(yùn)算(相等性、子集、超集)等。

3.1 成員運(yùn)算

可以通過成員運(yùn)算innot in 檢查元素是否在集合中,

示例代碼如下:

set1 = {"你好", "Python", "這個是", "集合", "set"}
print("Python" in set1)  # True
print("您好" in set1)  # False
print("set" not in set1)  # False
print("list" not in set1)  # True

3.2 交并差運(yùn)算

Python中的集合跟數(shù)學(xué)上的集合一樣,可以進(jìn)行交集、并集、差集等運(yùn)算,而且可以通過運(yùn)算符和方法調(diào)用兩種方式來進(jìn)行操作。

示例代碼如下:

set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {2, 4, 6, 8, 10}

# 交集(咱倆都有的)
# 方法一: 使用 & 運(yùn)算符
print(set1 & set2)                # {2, 4, 6}
# 方法二: 使用intersection方法
print(set1.intersection(set2))    # {2, 4, 6}

# 并集(咱倆加在一起)
# 方法一: 使用 | 運(yùn)算符
print(set1 | set2)         # {1, 2, 3, 4, 5, 6, 7, 8, 10}
# 方法二: 使用union方法
print(set1.union(set2))    # {1, 2, 3, 4, 5, 6, 7, 8, 10}

# 差集(我不要你有的)
# 方法一: 使用 - 運(yùn)算符
print(set1 - set2)              # {1, 3, 5, 7}
# 方法二: 使用difference方法
print(set1.difference(set2))    # {1, 3, 5, 7}

# 對稱差(咱倆不要你的和我的,只要專一的)
# 方法一: 使用 ^ 運(yùn)算符
print(set1 ^ set2)                        # {1, 3, 5, 7, 8, 10}
# 方法二: 使用symmetric_difference方法
print(set1.symmetric_difference(set2))    # {1, 3, 5, 7, 8, 10}
# 方法三: 對稱差相當(dāng)于兩個集合的并集減去交集
print((set1 | set2) - (set1 & set2))      # {1, 3, 5, 7, 8, 10}

集合的交集、并集、差集運(yùn)算還可以跟賦值運(yùn)算一起構(gòu)成復(fù)合運(yùn)算,

示例代碼如下:

set1 = {1, 3, 5, 7}
set2 = {2, 4, 6}
# 將set1和set2求并集再賦值給set1
# 也可以通過set1.update(set2)來實(shí)現(xiàn)
set1 |= set2  # set1 = set1 | set2
print(set1)    # {1, 2, 3, 4, 5, 6, 7}
set3 = {3, 6, 9}
# 將set1和set3求交集再賦值給set1
# 也可以通過set1.intersection_update(set3)來實(shí)現(xiàn)
set1 &= set3  # set1 = set1 & set3
print(set1)    # {3, 6}

3.3 比較運(yùn)算

兩個集合可以用==和!=進(jìn)行相等性判斷,如果兩個集合中的元素完全相同,那么==比較的結(jié)果就是True,否則就是False;!=則反之。

如果集合A的所有的元素也是集合B的元素,就稱為A是B的子集,B是A的超集;如果集合A的子級且不等于集合B,那就稱為A是B的真子級。判斷子集和超集的運(yùn)算符為<和>。示例代碼↓

set1 = {1, 3, 5}
set2 = {1, 2, 3, 4, 5}
set3 = set2
# <運(yùn)算符表示真子集,<=運(yùn)算符表示子集
print(set1 < set2, set1 <= set2)    # True True
print(set2 < set3, set2 <= set3)    # False True
# 通過issubset方法也能進(jìn)行子集判斷
print(set1.issubset(set2))      # True
print(set2.issubset(set2))      # True
# issubset方法和<=運(yùn)算符是等價的

# 反過來可以用issuperset或>運(yùn)算符進(jìn)行超集判斷
print(set2.issuperset(set1))    # True
print(set2 > set1)              # True

4、集合的方法

集合屬于可變列類型,可以通過集合類型的方法對集合的元素進(jìn)行修改,

示例代碼:

# 創(chuàng)建一個空集合
set1 = set()

# 通過add()方法為集合添加元素
set1.add(1)
set1.add(2)
print(set1)  # {1, 2}

# 通過update()給集合添加元素
set1.update({1, 2, 3, 4, 5})
print(set1)  # {1, 2, 3, 4, 5} 元素在集合中已存在,該元素只會出現(xiàn)一次

# 通過discard()方法刪除指定元素
set1.discard(4)
set1.discard(2)
set1.discard(22)  # 集合里面沒有不會出錯
print(set1)  # {1, 3, 5}

# 通過remove()方法刪除指定元素
# set1.remove(6) # KeyError: 6,使用remove()方法刪除指定元素時先做成員運(yùn)算就不會出錯了
if 6 in set1:
    set1.remove(6)

# pop方法可以從集合中隨機(jī)刪除一個元素并返回該元素
print(set1.pop())  # 1 本次剔除的是1

# clear方法可以清空整個集合
set1.clear()
print(type(set1))  # <class 'set'>
print(set1)    # set()

# 通過isdisjoint()方法判斷兩個集合有沒有重復(fù)的元素,有返回False沒有則返回Ture
set2 = {"Hello", "World"}
set3 = {"Hello", "一碗周"}
set4 = {"Hi", "Python"}
print(set2.isdisjoint(set3))  # False
print(set2.isdisjoint(set4))  # True

5、不可變集合

Python中還有一種不可變類型的集合,名字叫frozenset,于集合的區(qū)別就跟列表和元組的區(qū)別一樣。除了不能添加和刪除元素,frozenset在其他方面跟set基本是一樣的。

示例代碼:

set1 = frozenset({1, 3, 5, 7})
set2 = frozenset(range(1, 6))
print(set1 & set2)    # frozenset({1, 3, 5})
print(set1 | set2)    # frozenset({1, 2, 3, 4, 5, 7})
print(set1 - set2)    # frozenset({7})
print(set1 < set2)    # False

到此這篇關(guān)于Python集合的基礎(chǔ)操作的文章就介紹到這了,更多相關(guān)Python集合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python機(jī)器學(xué)習(xí)入門(六)之Python優(yōu)化模型

    Python機(jī)器學(xué)習(xí)入門(六)之Python優(yōu)化模型

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • django 使用內(nèi)置messages的操作

    django 使用內(nèi)置messages的操作

    這篇文章主要介紹了django 使用內(nèi)置messages的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python批量賦值操作實(shí)例

    python批量賦值操作實(shí)例

    今天小編就為大家分享一篇python批量賦值操作實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 利用Python實(shí)現(xiàn)面部識別的方法詳解

    利用Python實(shí)現(xiàn)面部識別的方法詳解

    人臉識別正在成為軟件開發(fā)中的一種趨勢。它有助于識別人臉并使應(yīng)用程序更加健壯。本文將使用python和face_recognition庫創(chuàng)建一個簡單的人臉識別,需要的可以參考一下
    2022-05-05
  • 用python代碼做configure文件

    用python代碼做configure文件

    在lua中,我一直用lua作為config文件,或者承載數(shù)據(jù)的文件 - 好處是lua本身就很好閱讀,然后無需額外寫解析的代碼,還支持在configure文件中讀環(huán)境變量,條件判斷等,方便又強(qiáng)大!
    2014-07-07
  • python基本數(shù)據(jù)類型練習(xí)題

    python基本數(shù)據(jù)類型練習(xí)題

    這篇文章主要介紹了python基本數(shù)據(jù)類型,Python?中的變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。在?Python?中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的內(nèi)存中對象的類型。下面舉例說明改內(nèi)容,,需要的朋友可以參考一下
    2022-01-01
  • Python導(dǎo)入oracle數(shù)據(jù)的方法

    Python導(dǎo)入oracle數(shù)據(jù)的方法

    這篇文章主要介紹了Python導(dǎo)入oracle數(shù)據(jù)的方法,涉及Python讀取csv文件信息再插入到Oracle數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • python神經(jīng)網(wǎng)絡(luò)使用Keras進(jìn)行模型的保存與讀取

    python神經(jīng)網(wǎng)絡(luò)使用Keras進(jìn)行模型的保存與讀取

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用Keras進(jìn)行模型的保存與讀取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 在Python中調(diào)用Ping命令,批量IP的方法

    在Python中調(diào)用Ping命令,批量IP的方法

    今天小編就為大家分享一篇在Python中調(diào)用Ping命令,批量IP的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python實(shí)現(xiàn)簡單點(diǎn)對點(diǎn)(p2p)聊天

    python實(shí)現(xiàn)簡單點(diǎn)對點(diǎn)(p2p)聊天

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單點(diǎn)對點(diǎn)p2p聊天,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論

郓城县| 大新县| 闽侯县| 乳山市| 谢通门县| 青川县| 桐梓县| 永新县| 延庆县| 青田县| 莱西市| 蓬安县| 龙泉市| 甘南县| 天水市| 奉贤区| 辉南县| 满洲里市| 任丘市| 曲阜市| 明星| 曲阜市| 勃利县| 伊金霍洛旗| 固阳县| 佛冈县| 毕节市| 图木舒克市| 宜宾市| 灵宝市| 安福县| 东宁县| 万荣县| 瓮安县| 宁强县| 惠州市| 宝坻区| 石柱| 鹤峰县| 五寨县| 青神县|