06_Python的數據類型3元組,集合和字典_Python編程之路

来源:https://www.cnblogs.com/susmote/archive/2018/04/04/8718176.html
-Advertisement-
Play Games

上一節跟大家講了Python的列表,當然不是完整的講完,後續我們還會提到,這一節我們還是來講Python的數據類型 首先要講到的就是元組 元組其實擁有列表的一些特性,可以存儲不同類型的值,但在某些方面元組又比不上列表 定義一個元組,你可以不用加‘ [ ] ’,你只需用逗號隔開即可 例如 元組也能被嵌 ...


上一節跟大家講了Python的列表,當然不是完整的講完,後續我們還會提到,這一節我們還是來講Python的數據類型

首先要講到的就是元組

元組其實擁有列表的一些特性,可以存儲不同類型的值,但在某些方面元組又比不上列表

定義一個元組,你可以不用加‘ [ ] ’,你只需用逗號隔開即可

例如

In [1]: my_tuple = "susmote", 28, 123456789

In [2]: my_tuple[0]
Out[2]: 'susmote'

In [3]: my_tuple[1]
Out[3]: 28

In [4]: my_tuple
Out[4]: ('susmote', 28, 123456789)

  

元組也能被嵌套

In [5]: nested_t = my_tuple, (4, 3, 2, 1)

In [6]: nested_t
Out[6]: (('susmote', 28, 123456789), (4, 3, 2, 1))

In [7]: nested_t[0][0]
Out[7]: 'susmote'

  

在這裡,元組和列表最大的不同就是元組是不可變的,不能通過直接賦值改變元組中的值

In [8]: my_tuple = "susmote", 28, 123456789

In [9]: my_tuple[0] = "ayesup"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-d99875c0ce61> in <module>()
----> 1 my_tuple[0] = "ayesup"

TypeError: 'tuple' object does not support item assignment

  下麵報了一個類型錯誤

但是,在元組裡面可以包含列表,而列表有是可變的,所以說元組是包含可變對象

In [11]: my_tuple = ([1, 2, 3],[4, 5, 6])

In [12]: my_tuple[0][0]  = 7

In [13]: my_tuple
Out[13]: ([7, 2, 3], [4, 5, 6])

  在這裡,要註意,括弧是可以不用加上的,但為什麼規範起見,還是儘量要把括弧加上

 

元組是可以為空的,你只需要在賦值的時候加一個括弧即可

In [16]: my_tuple = ()

In [17]: len(my_tuple)
Out[17]: 0

  

如果你想創建一個只有一個元素的元組,那麼你只需要在最後加上一個逗號就可以了

In [18]: my_tuple = "susmote",

In [19]: my_tuple
Out[19]: ('susmote',)

In [20]: len(my_tuple)
Out[20]: 1

  

元組是一個包含多個值的列表集合,所以我們可以直接獲取其中的值,並賦給一個變數

In [27]: my_tuple = "susmote",123456, 18

In [28]: my_tuple = "susmote", 18, 13488888888

In [29]: name, age, phone = my_tuple

In [30]: name
Out[30]: 'susmote'

In [31]: phone
Out[31]: 13488888888

  

接下來我們講一下集合

集合相信大家應該不陌生,初中的時候應該是學過的,當然你如果說你沒上個初中,那就另當別論了

由一個或多個確定的元素所構成的整體叫做集合。這是數學中的概念,在python中也可以這樣簡單的認為

聲明一個要用到花括弧" { } ",你要把值全部加到括弧裡面

首先集合的一個重要概念就是無序

例如,我們聲明一個集合

In [32]: my_set = {'a', 'b', 'c', 'd'}

In [33]: print(my_set)
{'b', 'd', 'c', 'a'}

  很清晰的看出他是無序的

 

同時你也可以通過判斷語句" in "來獲取某個元素是否存在與集合中,他返回一個布爾類型

In [36]: my_set = {'a', 'b', 'c', 'd'}

In [37]: 'a' in my_set
Out[37]: True

In [38]: 'e' in my_set
Out[38]: False

  tips:Ture代表真,false代表假(相信大家都知道)

 

然後集合還有一個概念就是裡面的元素只能是唯一的,如果有重覆的,會自動移除

In [1]: my_set = {'a', 'b', 'b', 'c', 'c', 'd'}

In [2]: my_set
Out[2]: {'a', 'b', 'c', 'd'}

  

除了通過花括弧賦值,我們還可以直接調用 set() 方法,生成一個集合

In [3]: my_set = set('abcdefgabcdefg')

In [4]: my_set
Out[4]: {'a', 'b', 'c', 'd', 'e', 'f', 'g'}

  

下麵我們要講到集合的一個重要的概念

集合的運算

“ - ”   差運算

In [5]: a = set('abcde')

In [6]: b = set('bdfgh')

In [7]: a - b
Out[7]: {'a', 'c', 'e'}

  只保留a獨有的元素,其他的如有與b相同的則移除

“ | ” 並運算

In [8]: a = set('abcde')

In [9]: b = set('bdfgh')

In [10]: a | b
Out[10]: {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}

  包含a和b所有的元素,如果有重覆的則只留一個

“ & ” 交運算,求交集

In [11]: a = set('abcde')

In [12]: b = set('bdfgh')

In [13]: a & b
Out[13]: {'b', 'd'}

  只保留a集合和b集合中相同的元素

“ ^ ” 求交集的補集

In [16]: a = set('abcde')

In [17]: b = set('bdfgh')

In [18]: a ^ b
Out[18]: {'a', 'c', 'e', 'f', 'g', 'h'}

  保留a和b都單獨存在的元素,去除a與b相同的元素

 

關於集合我們主要需要瞭解的只有這些,至於運用,後續講

 

在這我們再講最後一種數據類型

字典( Dictionaries)

在python中,字典是一個很常用的數據類型。在其他語言中,也有叫做關聯數組的

字典不像列表,元組,存在自動有順序的索引(index)

字典中的索引也就是必須手動建立的Key(鍵),每個鍵對應一個value(值)

而且鍵除了普通的數值類型之外,還可以用“String”類型

定義一個字典要用到“ { } ”,每個key後面加“ : ”(冒號)接value(值),再加一個值的話,用逗號隔開

例如,我們下麵定義一個字典

In [23]: my_dict = {'name': "susmote", 'age': 18, 'tel': 1348888888}

In [24]: my_dict
Out[24]: {'age': 18, 'name': 'susmote', 'tel': 1348888888}

  

下麵我們通過key來獲取值

In [20]: my_dict = {'name': "susmote", 'age': 18, 'tel': 1348888888}

In [21]: my_dict["name"]
Out[21]: 'susmote'

In [22]: my_dict["tel"]
Out[22]: 1348888888

  

如果你覺得裡面有個元素沒用了,你可以通過  “del()”方法來刪除

In [23]: my_dict = {'name': "susmote", 'age': 18, 'tel': 1348888888}

In [24]: my_dict
Out[24]: {'age': 18, 'name': 'susmote', 'tel': 1348888888}

In [25]: del my_dict["tel"]

In [26]: my_dict
Out[26]: {'age': 18, 'name': 'susmote'}

  

你可以通過list()方法列出字典里所有的key,或者是所有的value

In [32]: my_dict = {'name': "susmote", 'age': 18, 'tel': 1348888888}

In [33]: list(my_dict.keys())
Out[33]: ['name', 'age', 'tel']

In [34]: list(my_dict.values())
Out[34]: ['susmote', 18, 1348888888]

  

排序,通過sorted()方法按照key的首字母順序進行排序

In [5]: my_dict = {'name': "susmote", 'age': 18, 'tel': 1348888888}

In [6]: sorted(my_dict.keys())
Out[6]: ['age', 'name', 'tel']

  

前面講到集合可以通過 “in”   "not in"判斷一個keys是否存在與集合中,當然字典也是可以的,同樣也是返回一個布爾類型

In [41]: my_dict = {'name': "susmote", 'age': 18, 'tel': 1348888888}

In [42]: 'name' in my_dict
Out[42]: True

In [43]: 'name'not in my_dict
Out[43]: False

  

使用dict() 生成字典

In [44]: dict([('name', 'susmote'), ('age', 18), ('Tel', 13488888888)])
Out[44]: {'Tel': 13488888888, 'age': 18, 'name': 'susmote'}

  也可以直接這樣(字元串類型簡單的時候)

In [45]: dict(name = "susmote", age = 18, tel = 13488888888)
Out[45]: {'age': 18, 'name': 'susmote', 'tel': 13488888888}

  

python的數據類型大概就是這些,有一些知識點,我會在後面學了控制迴圈語句之後在講

我的博客網站 www.susmote.com


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

-Advertisement-
Play Games
更多相關文章
  • 這篇文章主要介紹了python sort、sorted高級排序技巧,本文講解了基礎排序、升序和降序、排序的穩定性和複雜排序、cmp函數排序法等內容,需要的朋友可以參考下 Python list內置sort()方法用來排序,也可以用python內置的全局sorted()方法來對可迭代的序列排序生成新的 ...
  • ...
  • 目前知道的迭代器有兩種: 一種是調用方法直接返回的; 一種是可迭代對象通過執行iter方法得到的。 迭代器的好處是可以節省記憶體。 如果在某些情況下,我們也需要節省記憶體,就只能自己寫。自己寫的這個能實現迭代器功能的東西就叫生成器。 ...
  • 1.寫函數,返回一個撲克牌列表,裡面有52項,每一項是一個元組 例如:[(‘紅心’,2),(‘草花’,2), …(‘黑桃’,‘A’)] 2.寫函數,傳入n個數,返回字典{‘max’:最大值,’min’:最小值} 例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2} 3 ...
  • 常用模塊 1 logging模塊 日誌級別:Noset (不設置) Debug (調試信息) 也可用10表示 Info--(消息信息) 也可用20表示 Warning (警告信息) 也可用30表示 Error (錯誤消息) 也可用40表示 Critical (嚴重錯誤) 也可用50表示 預設級別是W ...
  • 裝飾器本質上就是一個python函數,他可以讓其他函數在不需要做任何代碼變動的前提下,增加額外的功能,裝飾器的返回值也是一個函數對象。 裝飾器的應用場景:比如插入日誌,性能測試,事務處理,緩存等等場景。 ...
  • 1 學習計劃 1、業務受理需求分析 n 業務通知單 n 工單 n 工作單 2、創建業務受理環節的數據表 n 業務通知單 n 工單 n 工作單 3、實現業務受理自動分單 n 在CRM服務端擴展方法根據手機號查詢客戶信息 n 在CRM服務端擴展方法根據取件地址查詢定區id n 調整業務受理頁面回顯客戶信 ...
  • 5-2 5-6 5-8 5-9 5-11 6-1 6-5 6-9 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...