Python:列表、元組、集合、字典,數據類型之間的 5 個差異

Python:列表、元組、集合、字典,數據類型之間的 5 個差異

  • 1. 相同點
  • 2. 不同點
    • 2.1 排序
    • 2.2 索引
    • 2.3 可變性
    • 2.5 允許的類型
    • 2.4 允許重復
  • 源碼

這篇博客將介紹列表、元組、集合、字典(lists, tuples, sets, and dictionaries)數據類型的5個差異;包括:order排序、index索引、 Mutability可變性、Duplicates Allowed允許重復、Types Allowed 允許的類型

1. 相同點

  • 都可以存儲多個值,唯一差別是括起來的特殊符號

2. 不同點

五個關鍵差異使每種數據類型都以某種方式有所幫助。差異基于:-order排序、index索引、 Mutability可變性、Duplicates Allowed允許重復、Types Allowed 允許的類型。

2.1 排序

列表、元組和字典是有序的。 set是無序的。 注意:Python 3.7 之前的字典是無序的。

2.2 索引

從一組元素中訪問單個元素稱為索引。可以使用方括號并在其中提及索引值(從 0 開始)來完成索引。索引指定數據類型是否可以索引。

列表和元組可以建立索引。 set無法建立索引。 字典的鍵類似于索引。

2.3 可變性

可變性指定數據類型的值最初是否可以修改。它將數據類型分為可變和不可變。

列表、set和字典是可變的并且可以修改。元組是不可變的并且不能被修改。
注意:set值不能修改。但可以添加或刪除值。由于同一內存位置發生更改,它仍然被認為是可變的。
字典的值是可變的,key是不可變的,但可以增加刪除key;

2.5 允許的類型

某些數據類型允許可變值和不可變值,但某些類型僅允許其中的不可變值。數據類型可以基于此進行分類。

2.4 允許重復

另一個關鍵區別是檢查類型是否允許重復其元素。

列表和元組允許重復值。 set不允許重復值。如果嘗試輸入重復項,它將只接受一個值并忽略重復項。
字典允許在其值中出現重復項,但不允許在其鍵中出現重復項。鍵必須是唯一的。
列表和元組允許可變和不可變值。 set只允許不可變的值。一個set甚至不能包含另一個set。
字典只允許鍵中存在不可變類型。字典值可以是可變的和不可變的。

源碼

# lists, tuples, sets, and dictionaries差別
# python python_collections.py# 1. 都可以存儲多個值,唯一差別是括起來的特殊符號
# 2. 主要差異 五個關鍵差異使每種數據類型都以某種方式有所幫助。差異基于:-order排序、index索引、 Mutability可變性、Duplicates Allowed允許重復、Types Allowed 允許的類型。def printA(li, tp, st, di):print(li)print(tp)print(st)print(di)print()li = [1, 2, 3, 4]  # Lists use []
tp = (1, 2, 3, 4)  # Tuples use ()
st = {1, 2, 3, 4}  # Sets use {}
di = {1: 10, 2: 20}  # Dictionaries use {} but contain key:value pairs
printA(li, tp, st, di)## 2.1 排序:列表、元組和字典是有序的。 set是無序的。 注意:Python 3.7 之前的字典是無序的。
li = ['A', 'B', 'C']
tp = ('A', 'B', 'C')
st = {'A', 'B', 'C'}
di = {'A': 10, 'B': 20, 'C': 30}
printA(li, tp, st, di)## 2.2 索引:從一組元素中訪問單個元素稱為索引。可以使用方括號并在其中提及索引值(從 0 開始)來完成索引。索引指定數據類型是否可以索引。列表和元組可以建立索引。 set無法建立索引。 字典可以設置鍵,因為它們有鍵和值。但它類似于索引。
li = ['A', 'B', 'C']
tp = ('A', 'B', 'C')
di = {'A': 10, 'B': 20, 'C': 30}print(li[0])
print(tp[1])
print(di['C'])## 2.3 可變性 可變性指定數據類型的值最初是否可以修改。它將數據類型分為可變和不可變。 列表、set和字典是可變的并且可以修改。元組是不可變的并且不能被修改。 注意:set值不能修改。但可以添加或刪除值。由于同一內存位置發生更改,它仍然被認為是可變的。
# 可變類型
li = ['A', 'B', 'C']
li[0] = 'D'print(li)# 不可變類型
tp = ('A', 'B', 'C')
# tp[0] = 'D'
# TypeError: 'tuple' object does not support item assignment## 2.4 允許重復 另一個關鍵區別是檢查類型是否允許重復其元素。 列表和元組允許重復值。 set不允許重復值。如果您嘗試輸入重復項,它將只接受一個值并忽略重復項。 字典允許在其值中出現重復項,但不允許在其鍵中出現重復項。鍵必須是唯一的。
li = ['A', 'B', 'C', 'A']
tp = ('A', 'B', 'C', 'A')
st = {'A', 'B', 'C', 'A'}
di = {'A': 10, 'B': 20, 'C': 10}printA(li, tp, st, di)# 使用相同的key取最后一個設置的值
di = {'A': 10, 'B': 20, 'A': 20}
print(di)## 2.5 允許的類型 某些數據類型允許可變值和不可變值,但某些類型僅允許其中的不可變值。數據類型可以基于此進行分類。
# 列表和元組允許可變和不可變值。 set只允許不可變的值。這意味著由于其可變性,一個set甚至不能包含另一個set。字典只允許鍵中存在不可變類型。字典值可以是可變的和不可變的。
li = [(30, 40), [10, 20]]
tp = ((30, 40), [10, 20])print(li)
print(tp)# set不可變,但可以插入/移除元素;
# 該錯誤表明set不可散列unhashable。所有不可散列類型都是可變的,所有可散列類型都是不可變的。
# st = {10, 20, {30, 40}}
# print(st)
# TypeError: unhashable type: 'set'# Dict同理,值可變,key不可變;
# di = {'A': [10], [2]: 'B'}
# print(di)
# TypeError: unhashable type: 'list'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36732.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

6.0 Python 使用函數裝飾器

裝飾器可以使函數執行前和執行后分別執行其他的附加功能,這種在代碼運行期間動態增加功能的方式,稱之為"裝飾器"(Decorator),裝飾器的功能非常強大,裝飾器一般接受一個函數對象作為參數,以對其進行增強&…

安達發APS|生產計劃排產軟件助力加工制造業智能化轉型

隨著全球經濟一體化的不斷深入,市場競爭日益激烈,加工制造企業面臨著巨大的生存壓力。在這種情況下,企業對于生產計劃的精細化管理需求日益迫切。為了適應這一市場需求,安達發推出了專門針對加工企業的APS生產計劃排產軟件&#x…

新一代構建工具 maven-mvnd

新一代構建工具 maven-mvnd mvnd的前世今生下載安裝 mvndIDEA集成 mvnd的前世今生 maven 作為一代經典的構建工具,流行了很多年,知道現在依然是大部分Java項目的構建工具的首選;但隨著項目復雜度提高,代碼量及依賴庫的增多使得ma…

簡單易懂的 Postman Runner 參數自增教程

目錄 什么是 Postman Runner? Postman Runner 如何實現參數自增? 步驟一:設置全局參數 步驟二:將全局參數帶入請求參數 步驟三:實現參數自增 資料獲取方法 什么是 Postman Runner? Postman Runner 是…

Python爬蟲(1)一次性搞定Selenium(新版)8種find_element元素定位方式

selenium中有8種不錯的元素定位方式,每個方式和應用場景都不一樣,需要根據自己的使用情況來進行修改 8種find_element元素定位方式 1.id定位2.CSS定位3.XPATH定位4.name定位5.class_name定位6.Link_Text定位7.PARTIAL_LINK_TEXT定位8.TAG_NAME定位總結 …

【第一階段】kotlin中反引號中的函數名特點

在kotlin中可以直接中文定義函數,使用反引號進行調用 eg: fun main() {2023年8月9日定義的函數(5) }private fun 2023年8月9日定義的函數(num:Int){println("反引號的用法$num") }執行結果 在Java中is,in可以定義方法,但是在kotlin中is,in是…

資料分析(三)—— 基期、現期、人口、增長量

基期 基期值 現期值 - 增長量 增長量/增長率 現期值/1&#xff08;間隔)增長率 化除為乘 &#xff1a;當增長率&#xff5c;r| < 5% 時&#xff0c;&#xff0c; 注&#xff1a;當選項首位相同&#xff0c;第二位也相同時&#xff0c;只能用直除 基期和差 (結合選…

SolidUI社區-根據Prompt打造人設

背景 隨著文本生成圖像的語言模型興起&#xff0c;SolidUI想幫人們快速構建可視化工具&#xff0c;可視化內容包括2D,3D,3D場景&#xff0c;從而快速構三維數據演示場景。SolidUI 是一個創新的項目&#xff0c;旨在將自然語言處理&#xff08;NLP&#xff09;與計算機圖形學相…

【openwrt學習筆記】dnsmasq源碼閱讀

目錄 一、DHCP(Dynamic Host Configuration Protocol)1.1 前置知識1.2 參考鏈接1.3 IP地址分配代碼分析rfc2131.cdhcp-common.cdhcp.c 1.4 幾個小問題1.4.1 連續IP模式&#xff08;sequential_ip&#xff09;1.4.2 重新連接使用IP地址1.4.3 續約租期1.4.4 不同的MAC地址分配到相…

VS+Qt+C++旅游景區地圖導航源碼實例

程序示例精選 VSQtC旅游景區地圖導航 如需安裝運行環境或遠程調試&#xff0c;見文章底部個人QQ名片&#xff0c;由專業技術人員遠程協助&#xff01; 前言 這篇博客針對<<VSQtC旅游景區地圖導航>>編寫代碼&#xff0c;代碼整潔&#xff0c;規則&#xff0c;易讀。…

【Vue框架】菜單欄權限的使用與顯示

前言 在 【Vue框架】Vue路由配置 中的getters.js里&#xff0c;可以看到有一個應用程序的狀態&#xff08;變量&#xff09;叫 permission_routes&#xff0c;這個就是管理前端菜單欄的狀態。具體代碼的介紹&#xff0c;都以注釋的形式來說明。 1、modules\permission.js 1…

SpringBoot 將項目打包成 jar 包

SpringBoot 將項目打包成 jar 包 一、項目打包成 jar 包 首先在 pom.xml 文件中導入 Springboot 的 maven 依賴 <!-- 將應用打包成一個可以執行的 jar 包 --> <build><plugins><plugin><groupId>org.springframework.boot</groupId><…

學習筆記整理-面向對象-02-認識函數的上下文

一、認識函數的上下文 什么是上下文 垃圾分類&#xff0c;這是非常好的習慣&#xff0c;值得表揚隨手關燈&#xff0c;這是非常好的習慣&#xff0c;值得表揚遛狗栓繩&#xff0c;這是非常好的習慣&#xff0c;值得表揚課后復習&#xff0c;這是非常好的習慣&#xff0c;值得…

【數據結構】單鏈表OJ題(二)

&#x1f525;博客主頁&#xff1a;小王又困了 &#x1f4da;系列專欄&#xff1a;數據結構 &#x1f31f;人之為學&#xff0c;不日近則日退 ??感謝大家點贊&#x1f44d;收藏?評論?? 目錄 一、鏈表分割 &#x1f4a1;方法一&#xff1a; 二、鏈表的回文 &#x…

hosts文件中被添加 windows10.microdone.cn

在網上搜了一圈逗說是之前下過征信中心的安全控件,是微通新成網絡科技有限公司這家公司提供的,也是http://microdone.cn的運營商。后邊只要使用代理,就會跳出來,所以常規處理操作就是去把瀏覽器上的安全控件卸載了。 參考 解決 windows10 的 代理頻繁被自動篡改為windows10.mi…

利用python實現激光雷達LAS數據濾波的7種方式,使用laspy讀寫

激光雷達&#xff08;LiDAR&#xff09;數據在實際應用中可能受到噪聲和不完美的測量影響&#xff0c;因此數據去噪和濾波方法變得至關重要&#xff0c;以提高數據質量和準確性。以下是一些常用的激光雷達數據去噪與濾波方法。 原始數據如下&#xff1a; 1. 移動平均濾波&…

kubernetes中PV和PVC

目錄 一、PV、PVC簡介 二、PV、PVC關系 三、創建靜態PV 1.配置nfs存儲 2.定義PV 3.定義PVC 4.測試訪問 四、 搭建 StorageClass nfs-client-provisioner &#xff0c;實現 NFS 的動態 PV 創建 1. 配置nfs服務 2.創建 Service Account 3.使用 Deployment 來創建 NFS P…

Figma中文社區來啦,云端協作設計你準備好了嗎?

Figma是改變產品設計協作方式的重要工具,但由于沒有中文社區,對國內設計師的約束較大。而擁有全中文UI 界面、功能齊全的即時設計資源廣場,恰好彌補了Figma的這一短板,它也將取代Figma成為設計師新寵。 1、UI組件集 Figma中文社區替代即時設計資源廣場,擁有海量豐富的UI設計組…

【BEV Review】論文 Delving into the Devils of Bird’s-eye-view 2022-9 筆記

背景 一般來說&#xff0c;自動駕駛車輛的視覺傳感器&#xff08;比如攝像頭&#xff09;安裝在車身上方或者車內后視鏡上。無論哪個位置&#xff0c;攝像頭所得到的都是真實世界在透視視圖&#xff08;Perspective View&#xff09;下的投影&#xff08;世界坐標系到圖像坐標系…

ssm柚子云電子商城java圖書購物電子商務管理jsp源代碼

本項目為前幾天收費幫學妹做的一個項目&#xff0c;Java EE JSP項目&#xff0c;在工作環境中基本使用不到&#xff0c;但是很多學校把這個當作編程入門的項目來做&#xff0c;故分享出本項目供初學者參考。 一、項目描述 ssm柚子云電子商城 系統有2權限&#xff1a;前臺、后…