數據類型之set

来源:http://www.cnblogs.com/zhagyilig/archive/2017/05/30/6920938.html
-Advertisement-
Play Games

數據類型之集合 set set集合,是一個無序且不重覆的元素集合 A = set([1, 2, 3, 4, 5, 6,]) B = set([2, 3, 4, 5, 6, 7, 8]) type(A) type(B) class set(object): """ set() new empty se ...


數據類型之集合 set

set集合,是一個無序且不重覆的元素集合

A = set([1, 2, 3, 4, 5, 6,])
B = set([2, 3, 4, 5, 6, 7, 8])
type(A)
<class 'set'>
type(B)
<class 'set'>

class set(object):
"""
set() -> new empty set object
set(iterable) -> new set object
 
Build an unordered collection of unique elements.
"""
def add(self, *args, **kwargs): # real signature unknown
    """
    Add an element to a set,添加元素
     
    This has no effect if the element is already present.
    """
    pass

def clear(self, *args, **kwargs): # real signature unknown
    """ Remove all elements from this set. 清除內容"""
    pass

def copy(self, *args, **kwargs): # real signature unknown
    """ Return a shallow copy of a set. 淺拷貝  """
    pass

def difference(self, *args, **kwargs): # real signature unknown
    """
    Return the difference of two or more sets as a new set. A中存在,B中不存在
     
    (i.e. all elements that are in this set but not the others.)
    """
    pass
//  >>> A = set([1, 2, 3, 4, 5, 6,])
    >>> B = set([2, 3, 4, 5, 6, 7, 8])
    >>> 
    >>> 
    >>> A.difference(B)
    {1}

def difference_update(self, *args, **kwargs): # real signature unknown
    """ Remove all elements of another set from this set.  從當前集合中刪除和B中相同的元素"""
    pass
//  >>> A.difference_update(B)
>>> A
{1}
>>> B
{2, 3, 4, 5, 6, 7, 8}

def discard(self, *args, **kwargs): # real signature unknown
    """
    Remove an element from a set if it is a member.
     
    If the element is not a member, do nothing. 移除指定元素,不存在不保留
    """
    pass
//  >>> A
{1, 2, 3, 4, 5, 6}

>>> A.discard(4)
>>> A
{1, 2, 3, 5, 6}

def intersection(self, *args, **kwargs): # real signature unknown
    """
    Return the intersection of two sets as a new set. 交集
     
    (i.e. all elements that are in both sets.)
    """
    pass
//  >>> A
    {1, 2, 3, 5, 6}
    >>> B
    {2, 3, 4, 5, 6, 7, 8}
    >>> A.intersection(B)
    {2, 3, 5, 6}

def intersection_update(self, *args, **kwargs): # real signature unknown
    """ Update a set with the intersection of itself and another.  取交集並更更新到A中 """
    pass
//  >>> A
    {1, 2, 3, 5, 6}
    >>> B
    {2, 3, 4, 5, 6, 7, 8}
    >>> A.intersection_update(B)
    >>> A
    {2, 3, 5, 6}

def isdisjoint(self, *args, **kwargs): # real signature unknown
    """ Return True if two sets have a null intersection.  如果沒有交集,返回True,否則返回False"""
    pass

def issubset(self, *args, **kwargs): # real signature unknown
    """ Report whether another set contains this set.  是否是子序列"""
    pass

def issuperset(self, *args, **kwargs): # real signature unknown
    """ Report whether this set contains another set. 是否是父序列"""
    pass

def pop(self, *args, **kwargs): # real signature unknown
    """
    Remove and return an arbitrary set element.
    Raises KeyError if the set is empty. 移除元素
    """
    pass

def remove(self, *args, **kwargs): # real signature unknown
    """
    Remove an element from a set; it must be a member.
     
    If the element is not a member, raise a KeyError. 移除指定元素,不存在保錯
    """
    pass

def symmetric_difference(self, *args, **kwargs): # real signature unknown
    """
    Return the symmetric difference of two sets as a new set.  對稱差集
     
    (i.e. all elements that are in exactly one of the sets.)
    """
    pass
//  >>> A
    {2, 3, 5, 6}
    >>> B
    {2, 3, 4, 5, 6, 7, 8}
    >>> A.symmetric_difference(B)  //取出兩者異同數據
    {4, 7, 8}

def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
    """ Update a set with the symmetric difference of itself and another. 對稱差集,並更新到a中 """
    pass
//  >>> A
    {2, 3, 5, 6}
    >>> B
    {2, 3, 4, 5, 6, 7, 8}
    >>> A.symmetric_difference_update(B)
    >>> A
    {4, 7, 8}
 
def union(self, *args, **kwargs): # real signature unknown
    """
    Return the union of sets as a new set.  並集
     
    (i.e. all elements that are in either set.)
    """
    pass
//  >>> A
    {4, 7, 8}
    >>> B
    {2, 3, 4, 5, 6, 7, 8}
    >>> A.union(B)
    {2, 3, 4, 5, 6, 7, 8}

def update(self, *args, **kwargs): # real signature unknown
    """ Update a set with the union of itself and others. 更新 """
    pass
//  >>> A
    {4, 7, 8}
    >>> B
{2, 3, 4, 5, 6, 7, 8}
>>> A.update(B)
>>> A
{2, 3, 4, 5, 6, 7, 8}
  • 練習

    # 資料庫中原有
    old_dict = {
        "#1":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 },
        "#2":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 },
        "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }
    }
    
    # cmdb 新彙報的數據
    new_dict = {
        "#1":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 800 },
        "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 },
        "#4":{ 'hostname':'c2', 'cpu_count': 2, 'mem_capicity': 80 }
    }
    #需求三張表:
    #需要刪除:?
    #需要新建:?
    #需要更新:?
    #註意:無需考慮內部元素是否改變,只要原來存在,新彙報也存在,就是需要更新
    
    scripts:
    
    #!/usr/bin/env python
    old = set(old_dict.keys())
    new = set(new_dict.keys())
    
    update_set = old.intersection(new)   # 交集
    
    delete_set = old.symmetric_difference(update_set)   #對稱差集
    
    add_set = new.symmetric_difference(update_set)
    
    print(update_set)
    print(delete_set)
    print(add_set)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 要處理XML文檔,就要先解析(parse)他,解析器時這樣一個程式,讀入一個文件,確認整個文件具有正確的格式,然後將其分解成各種元素,使得程式員能夠訪問這些元素,Java庫提供了兩種XML解析器: 像文檔對象模型(Document Object Model,DOM)解析器這樣的樹型解析器,他們將讀入... ...
  • CASE WHEN 條件 THEN 改變的值 END 1.簡單case函數,使用表達式確定返回值: 語法: CASE title WHEN expression1 THEN result1 WHEN expression2 THEN result2 ... WHEN expressionN THEN ...
  • AlexNet(Alex Krizhevsky,ILSVRC2012冠軍)適合做圖像分類。層自左向右、自上向下讀取,關聯層分為一組,高度、寬度減小,深度增加。深度增加減少網路計算量。 訓練模型數據集 Stanford電腦視覺站點Stanford Dogs http://vision.stanfor ...
  • 7.1 raw_input(): raw_input()是python 的內建函數,通過讀取控制台的輸入與用戶實現交互。 raw_input()可以讓用戶輸入字元串(即等待用戶輸入內容),並存放到一個變數里。 運行結果: 7.2 getpass模塊: 輸入密碼時,如果想要不可見,需要利用 getpa ...
  • 對坦克大戰情有獨鍾是因為大學時候第一次參加程式設計比賽就做的這個游戲。當時用的語言是Java,那個比賽讓我悟出了面向對象的強大之處,我也是從那時開始接觸設計模式的。對我而言,坦克大戰有著非同尋常的意義,所以一定要帶大家用C++實現一下。 坦克大戰 我們依然使用EasyX在控制台程式中製作這個游戲程式 ...
  • 本篇文章整理了幾道Linux下C語言的經典面試題,相信對大家更好的理解Linux下的C語言會有很大的幫助,歡迎大家探討指正。 1、如果在Linux下使用GCC編譯器執行下列程式,輸出結果是什麼? 答案如下: 2、C語言程式不使用任何條件運算符,列印出十次"Hello"? 答案如下: 或是: 3、如果 ...
  • 一、實驗原理 二、實驗步驟 三、實驗過程 1.(程式) (1)二分法:求 在區間(1,2)之間的根,取 (a)bipart.m: (b)fun1.m: (2)不動點迭代法:求方程在附近的根,取 (a)budong.m: (b)fun.m (3)牛頓迭代法:求方程在附近的根,取 newton.m: 2 ...
  • CloseHandle函數 來源:https://msdn.microsoft.com/en us/library/windows/desktop/ms724211(v=vs.85).aspx 作用 關閉一個打開的對象句柄。 語法 參數 hObject 已經打開的有效對象句柄。 返回值 如果函數操作 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...