學習python的第十天(集合數據類型,拷貝,深拷貝,淺拷貝)

来源:https://www.cnblogs.com/pythonywy/archive/2019/05/09/10840697.html
-Advertisement-
Play Games

5.9自我總結 1.集合數據類型 1.定義 用{}中間值用,隔開,且集合中元素排列是無序的,而且如果有相同元素會只保留一個 2.演算法 1.必須掌握 1.長度len 2.成員運算in和not in 3.並集(union或者|) ) 4.交集(intersection或者&) ) 5差集(differe ...


5.9自我總結

1.集合數據類型

1.定義

用{}中間值用,隔開,且集合中元素排列是無序的,而且如果有相同元素會只保留一個

2.演算法

1.必須掌握

1.長度len
set_1 = {1,2,3,4,5}
print(len(set_1))
#5
2.成員運算in和not in
#表示判斷集合裡面是否有某個值
set_1 = {1,2,3,4,5}
print(1 in set_1)
#True
print(100 in set_1)
#False
3.並集(union或者|)
#兩個集合的集合綜合,union或者|
set_1 = {1,2,3}
set_2 = {3,4,5}
set_3 = set_1.union(set_2)
set_4 = (set_1 | set_2)
print(set_3)
print(set_4)
#{1, 2, 3, 4, 5}

)

4.交集(intersection或者&)
set_1 = {1,2,3}
set_2 = {3,4,5}
set_3 = set_1.intersection(set_2)
set_4 = (set_1 & set_2)
print(set_3)
print(set_4)
#{2}

)

5差集(difference 或者 -)
set_1 = {1,2,3}
set_2 = {3,4,5}
set_3 = set_1.difference(set_2)
set_4 = (set_1 - set_2)
print(set_3)
print(set_4)
#{1,2}

http://images.cnblogs.com/cnblogs_com/pythonywy/1452728/o_%E5%B7%AE%E9%9B%86.jpg

6.對稱差集
set_1 = {1,2,3}
set_2 = {3,4,5}
set_3 = set_1.symmetric_difference(set_2)
set_4 = (set_1 ^ set_2)
print(set_3)
print(set_4)
#{1, 2, 4, 5}

http://images.cnblogs.com/cnblogs_com/pythonywy/1452728/o_%E5%AF%B9%E7%A7%B0%E5%B7%AE%E9%9B%86.jpg

7.集合內容是否相同(==)
set_1 = {1,2,3}
set_2 = {3,4,5}
print(set_1 == set_2)
#False
8.父集(>或者>=或者issuperset)
set_1 = {1,2,3}
set_2 = {1,2,3}
set_3 = set_1.issuperset(set_2) #issuperset與>=意思相同 
set_4 = (set_1 > set_2) #如果set_2 = {2},結果也為True
print(set_3)  #True
print(set_4)   #False
9.子集(<或者)
set_1 = {1,2,3}
set_2 = {1,2,3}
set_3 = set_1.issubset(set_2) #issubset與<=意思相同 
set_4 = (set_1 < set_2) #如果set_2 = {2},結果也為True
print(set_3)  #True
print(set_4)   #False

2.掌握

1.add

添加,列印添加時候回返回None

2.remove

移除,列印添加時候回返回None,找不到移除的內容會報錯

3.difference_update

刪除相同的值 列印添加時候回返回None

4.discard

移除,列印添加時候回返回None,找不到移除的內容也會返回None

5.isdisjoint

判斷有無交集

3.一個值或多個值

一個值

4,有序的或無序的

無序的

5.可變的或不可變

可變

2.深拷貝,淺拷貝,拷貝

比如說A拷貝B,A裡面的值發送變化時候B也會發生變化,淺拷貝和深拷貝一般出現在一個變數里有多個元素,有可變的元素和不可變的元素,比如若說A淺拷貝B,其中B可變元素變了,A也變了,B中不可變元素變了,A不會變,深拷貝則是,其中不管哪個元素變了後,兩者互不影響受限。

3.今日題目

第一部分

有如下兩個集合,pythons是報名python課程的學員名字集合,linuxs是報名linux課程的學員名字集合。

pythons={'jason','nick','sean','tank','gangdan','tiepao'}
linuxs={'tank','oldboy','gangdan'}
  1. 求出即報名python又報名linux課程的學員名字集合

    pythons={'jason','nick','sean','tank','gangdan','tiepao'}
    linuxs={'tank','oldboy','gangdan'}
    pythons_linuxs = pythons & linuxs
    print(pythons_linuxs)   
  2. 求出所有報名的學生名字集合

    pythons={'jason','nick','sean','tank','gangdan','tiepao'}
    linuxs={'tank','oldboy','gangdan'}
    pythons_linuxs = pythons | linuxs
    print(pythons_linuxs)
  3. 求出只報名python課程的學員名字

    pythons={'jason','nick','sean','tank','gangdan','tiepao'}
    linuxs={'tank','oldboy','gangdan'}
    pythons_linuxs = pythons - linuxs
    print(pythons_linuxs)
  4. 求出沒有同時這兩門課程的學員名字集合

    pythons={'jason','nick','sean','tank','gangdan','tiepao'}
    linuxs={'tank','oldboy','gangdan'}
    pythons_linuxs = pythons ^ linuxs
    print(pythons_linuxs)

第二部分

  1. 有列表l=['a','b',1,'a','a'],列表元素均為可hash類型,去重,得到新列表,且新列表無需保持列表原來的順序

    #去重
    l=['a','b',1,'a','a']
    new_l = set(l)
  2. 在上題的基礎上,保存列表原來的順序

    #第一種,想法,先用SET把他變成有序,再找到相同的刪掉在原來的位置,後面迴圈發現刪了後索引沒法索引,就根據長度再套了個迴圈
    l=['a','b',1,'a','a']
    l_2 = set(l)
    while len(l) != len(l_2):
        for v_1 in range(len(l)):
            for v_2 in range(1,len(l)):
                if l[v_1] == l[v_2]:
                    d = v_2
                    break
        del l[d]
    print(l)
    #第二種 做第三題發現裡面有字典沒法轉換成set,想到這樣,後來發現這樣就可以了。。
    l_2 = []
    for A in l:
        if A not in l_2:
            l_2.append(A)
    print(l_2)
  3. 有如下列表,列表元素為不可hash類型,去重,得到新列表,且新列表一定要保持列表原來的順序

l=[
    {'name':'nick','age':18,'sex':'male'},
    {'name':'tank','age':73,'sex':'male'},
    {'name':'nick','age':20,'sex':'female'},
    {'name':'nick','age':18,'sex':'male'},
    {'name':'nick','age':18,'sex':'male'},
]
#第一種
l=[
    {'name':'nick','age':18,'sex':'male'},
    {'name':'tank','age':73,'sex':'male'},
    {'name':'nick','age':20,'sex':'female'},
    {'name':'nick','age':18,'sex':'male'},
    {'name':'nick','age':18,'sex':'male'},
]
l_2 = []
for A in l:
    if A not in l_2:
        l_2.append(A)
while len(l) != len(l_2):
    for v_1 in range(len(l)):
        for v_2 in range(1,len(l)):
            if l[v_1] == l[v_2]:
                d = v_2
                break
    del l[d]
print(l)
#第二種 由於列表裡有字典沒法SET,然後想到這樣加進去,後面就這樣了
l_2 = []
for A in l:
    if A not in l_2:
        l_2.append(A)
print(l_2)

第三部分

  1. 請簡述拷貝、淺拷貝、深拷貝三者之間的區別:
比如說A拷貝B,A裡面的值發送變化時候B也會發生變化,淺拷貝和深拷貝一般出現在一個變數里有多個元素,有可變的元素和不可變的元素,比如若說A淺拷貝B,其中B可變元素變了,A也變了,B中不可變元素變了,A不會變,深拷貝則是,其中不管哪個元素變了後,兩者互不影響受限。

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

-Advertisement-
Play Games
更多相關文章
  • apache配置文件httpd.conf修改“AddType application/x-httpd-php .xxx”,“.xxx”是想要的尾碼名。 把文件尾碼改成自定義的尾碼名。 phpStorm為防止報錯,在Settings->File Types->Recognized File Types ...
  • Kafka集群搭建分為單節點的偽分散式集群和多節點的分散式集群兩種,首先來看一下單節點偽分散式集群安裝。單節點偽分散式集群是指集群由一臺ZooKeeper伺服器和一臺Kafka broker伺服器組成,如下圖所示: 為了搭建單節點Kafka集群,需要依次安裝如下軟體:安裝Java-->安裝ZooKe ...
  • 什麼是ABA? ABA的危害? ABA的解決方法? AtomicStampedReference是什麼? AtomicStampedReference是怎麼解決ABA的? ...
  • 10.1 數據結構特點 10.1.1 Scala集合基本介紹 uml => 統一建模語言 1) Scala同時支持不可變集合和可變集合,不可變集合可以安全的併發訪問 兩個主要的包 不可變集合:scala.collection.immutable 可變集合:scala.collection.mutab ...
  • 這裡整理一份 Java 的學習路線,希望對想要學習 Java 還沒有頭緒的小伙伴有所幫助~ ...
  • 開發人員調度軟體 這幾天在學校弄畢設,異常那邊找了個簡單數組l類項目做了一下 只為記錄,好記性不如爛筆頭 有誤請指正 ありがとうございます。 我的公眾號 作者:晨鐘暮鼓c個人微信公眾號:程式猿的月光寶盒 1.首先,項目名字是開發人員調動軟體,基於控制台,需求如下 2.涉及知識點 1. 類的繼承性和多 ...
  • 集合內置方法(必考) 用途:用於關係運算的集合體,由於集合內的元素無序且集合元素不可重覆,因此集合可以去重,但是去重後的集合會打亂原來元素的順序。 定義方式:{}內用逗號隔開多個元素,元素只能是不可變類型(整形、浮點型字元串),且有兩個特點: 1、 會刪除重覆的值 2、 會打亂集合內的值 {'fan ...
  • 如果是zuul(網關)的超時時間需要設置zuul、hystrix、ribbon等三部分: #zuul超時設置#預設1000zuul.host.socket-timeout-millis=2000#預設2000zuul.host.connect-timeout-millis=4000 #熔斷器啟用fe ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...