Python零基礎入門到高手8.4節: 元組與列表的區別

目錄

8.4.1 不可變數據類型

8.4.2 可變數據類型

8.4.3 元組與列表的區別

8.4.4 今天彩票沒中獎


8.4.1 不可變數據類型

不可變數據類型是指不可以對該數據類型進行原地修改,即只讀的數據類型。迄今為止學過的不可變數據類型有字符串,元組。

image.png

在使用[]操作符對字符串,元組進行修改時,Python會拋出類型錯誤的異常信息,我們可以在交互模式中進行驗證:

>>> content = "static data type"

>>> content[0]=S

Traceback (most recent call last):

?File "<stdin>", line 1, in <module>

NameError: name 'S' is not defined

>>> numbers = (1,2,3,4,5)

>>> numbers[0] = 6

Traceback (most recent call last):

?File "<stdin>", line 1, in <module>

TypeError: 'tuple' object does not support item assignment

Python解釋器拋出了TypeError的異常信息,TypeError表示類型錯誤的意思。之所以是類型錯誤,很好理解,因為字符串或元組這種類型不支持對元素進行修改。

8.4.2 可變數據類型

與不可變數據類型相對的是可變數據類型,在可變數據類型中,可以對容器中的元素進行修改。列表,以及在后面將要介紹的字典,集合等,都是可變的數據類型。我們同樣可以在交互模式中進行驗證:

>>> numbers = [1,2,3,4,5]

>>> id(numbers)

2749153235976

>>> numbers[0]=6

>>> numbers

[6, 2, 3, 4, 5]

>>> id(numbers)

2749153235976

從交互模式的輸出中可以分析出,可以通過[]操作符列表類型進行修改。修改后的列表與修改前的列表,它們具有相同的id值,說明是同一個列表。

調用內置的id函數可以得到對象的id值,在CPython中,id值即內存地址。

8.4.3 元組與列表的區別

在使用元組的場景中,都可以使用列表來進行代替,那么為什么還要定義元組這種數據類型?在本小節的內容中,通過兩個方面來進行分析:

(1) 元組是靜態,不可變的數據類型

元組與列表的核心區別在于,元組是靜態的,不可變的,列表是動態的, 可變的。我們在定義變量時,如果該對象具備靜態,不可變的語義,應當使用元組,否則應當使用列表。以生活中的購物清單來進行舉例,在購物清單中,我們可以隨時對清單進行修改,比如添加某一個商品,或從購物車中移除某一個商品。購物清單是可修改的,可變的,現在通過Python代碼來進行模擬:

#?__desc__?=?通過Python代碼模擬購物清單的添加和刪除#?定義shopping_list,表示購物清單
shopping_list?=?["消毒液",?"口罩",?"白酒"]#?口罩已經斷貨,從購物車中移除
shopping_list.remove("口罩")
#?shopping_list的輸出為["消毒液",?"白酒"]#?從購物車中添加葵花口服液
shopping_list.append("葵花口服液")
#?shopping_list的輸出為["消毒液",?"白酒",?"葵花口服液"]

一周有七天,從周一到周日,不會再包含其它的時間單位,此時通過元組來定義一周的所有時間,在使用上非常自然:

#?__desc__?=?通過元組來表示一周#?定義變量week,表示一周
week?=?("周一",?"周二",?"周三","周四",?"周五",?"周六","周日")我們同樣可以通過列表來表示一周:
#?__desc__?=?通過列表來表示一周#?定義變量week,表示一周
week?=?["周一",?"周二",?"周三","周四",?"周五",?"周六","周日"]

由于列表是可變的數據類型,所以可以在程序中隨時對列表進行修改:

#?__desc__?=?粗心的程序員添加了個周八
#?定義變量week,表示一周
week?=?["周一",?"周二",?"周三","周四",?"周五",?"周六","周日"]
week.append("周八")
#?week的輸出為["周一",?"周二",?"周三","周四",?"周五",?"周六","周日","周八"]

一周的時間里包含周八,這顯然不符合日常邏輯。而使用元組,可以避免這樣的問題, 一旦對元組進行修改,Python就會拋出類型錯誤的異常信息。

8.4.4 今天彩票沒中獎

跟薯條老師學高級爬蟲(JS逆向+安卓逆向),數據分析,大數據開發,金融量化交易,以及機器學習+深度學習算法。堅定自己的學習目標,保持學習的熱情,那你成為高手只是時間問題。

薯條老師的學生在南方電網,林氏家居,京東,阿里等大廠。想系統學習Python和Java的同學,可以移步薯條老師的個人技術博客:薯條老師的個人技術博客http://www.chipscoco.com/?對本節教程有任何不懂的同學,亦可在評論區中進行評論。薯條老師會詳細解答你們提出的每一個問題。

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

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

相關文章

無人機數據處理與特征提取技術分析!

一、運行邏輯 1. 數據采集與預處理 多傳感器融合&#xff1a;集成攝像頭、LiDAR、IMU、GPS等傳感器&#xff0c;通過硬件時間戳或PPS信號實現數據同步&#xff0c;確保時空一致性。 邊緣預處理&#xff1a;在無人機端進行數據壓縮&#xff08;如JPEG、H.265&#xff09;…

LeetCode 熱題 100 105. 從前序與中序遍歷序列構造二叉樹

LeetCode 熱題 100 | 105. 從前序與中序遍歷序列構造二叉樹 大家好&#xff0c;今天我們來解決一道經典的二叉樹問題——從前序與中序遍歷序列構造二叉樹。這道題在 LeetCode 上被標記為中等難度&#xff0c;要求根據給定的前序遍歷和中序遍歷序列&#xff0c;構造并返回二叉樹…

CSS- 1.1 css選擇器

本系列可作為前端學習系列的筆記&#xff0c;代碼的運行環境是在HBuilder中&#xff0c;小編會將代碼復制下來&#xff0c;大家復制下來就可以練習了&#xff0c;方便大家學習。 HTML系列文章 已經收錄在前端專欄&#xff0c;有需要的寶寶們可以點擊前端專欄查看&#xff01; 系…

MongoClient和AsyncIOMotorClient的區別和用法

示例代碼&#xff1a; from motor.motor_asyncio import AsyncIOMotorClient from pymongo import MongoClient&#x1f50d; 這兩個庫分別是&#xff1a; 名字說明舉個例子pymongo.MongoClient同步版 的 MongoDB 客戶端&#xff08;常規阻塞式操作&#xff09;你在主線程里一…

5.15打卡

浙大疏錦行 DAY 26 函數專題1 知識點回顧&#xff1a; 1. 函數的定義 2. 變量作用域&#xff1a;局部變量和全局變量 3. 函數的參數類型&#xff1a;位置參數、默認參數、不定參數 4. 傳遞參數的手段&#xff1a;關鍵詞參數 5. 傳遞參數的順序&#xff1a;同時出現三種參數…

針對面試-mysql篇

1.如何定位慢查詢? 1.1.介紹一下當時產生問題的場景(我們當時的接口測試的時候非常的慢&#xff0c;壓測的結果大概5秒鐘))&#xff0c;可以監測出哪個接口&#xff0c;最終因為是sql的問題 1.2.我們系統中當時采用了運維工具(Skywalking就是2秒&#xff0c;一旦sql執行超過2秒…

window 顯示驅動開發-報告圖形內存(三)

圖形內存報告示例 示例 1&#xff1a;筆記本電腦上的 128 MB 專用板載圖形內存 以下屏幕截圖顯示了使用 Intel Iris 離散圖形適配器運行 Windows 11 的 Surface 筆記本電腦的計算圖形內存數。 適配器的可用內存總數為 16424 MB&#xff0c;用于圖形用途&#xff0c;細分如下&…

極簡主義現代商務風格PPT模版6套一組分享下載

現代商務風格PPT模版下載https://pan.quark.cn/s/12fbc52124d9 第一張PPT模版&#xff0c;簡約風&#xff0c;橄欖綠背景&#xff0c;黑色豎條裝飾&#xff0c;文字有中英文標題和占位符。需要提取關鍵元素&#xff1a;簡約、橄欖綠、對稱布局、占位文本的位置。 風格?&#…

SpringBoot中10種動態修改配置的方法

在SpringBoot應用中&#xff0c;配置信息通常通過application.properties或application.yml文件靜態定義&#xff0c;應用啟動后這些配置就固定下來了。 但我們常常需要在不重啟應用的情況下動態修改配置&#xff0c;以實現灰度發布、A/B測試、動態調整線程池參數、切換功能開…

嵌入式自學第二十二天(5.15)

順序表和鏈表 優缺點 存儲方式&#xff1a; 順序表是一段連續的存儲單元 鏈表是邏輯結構連續物理結構&#xff08;在內存中的表現形式&#xff09;不連續 時間性能&#xff0c; 查找順序表O(1)&#xff1a;下標直接查找 鏈表 O(n)&#xff1a;從頭指針往后遍歷才能找到 插入和…

高并發內存池(三):TLS無鎖訪問以及Central Cache結構設計

目錄 前言&#xff1a; 一&#xff0c;thread cache線程局部存儲的實現 問題引入 概念說明 基本使用 thread cache TLS的實現 二&#xff0c;Central Cache整體的結構框架 大致結構 span結構 span結構的實現 三&#xff0c;Central Cache大致結構的實現 單例模式 thr…

Ubuntu 安裝 Docker(鏡像加速)完整教程

Docker 是一款開源的應用容器引擎&#xff0c;允許開發者打包應用及其依賴包到一個輕量級、可移植的容器中。本文將介紹在 Ubuntu 系統上安裝 Docker 的步驟。 1. 更新軟件源 首先&#xff0c;更新 Ubuntu 系統的軟件源&#xff1a; sudo apt update2. 安裝基本軟件 接下來…

【深度學習】數據集的劃分比例到底是選擇811還是712?

1 引入 在機器學習中&#xff0c;將數據集劃分為訓練集&#xff08;Training Set&#xff09;、驗證集&#xff08;Validation Set&#xff09;和測試集&#xff08;Test Set&#xff09;是非常標準的步驟。這三個集合各有其用途&#xff1a; 訓練集 (Training Set)&#xff…

Mysql刷題 day01

LC 197 上升的溫度 需求&#xff1a;編寫解決方案&#xff0c;找出與之前&#xff08;昨天的&#xff09;日期相比溫度更高的所有日期的 id 。 代碼&#xff1a; select w2.id from Weather as w1 join Weather as w2 on DateDiff(w2.recordDate , w1.recordDate) 1 where…

鴻蒙OSUniApp 制作個人信息編輯界面與頭像上傳功能#三方框架 #Uniapp

UniApp 制作個人信息編輯界面與頭像上傳功能 前言 最近在做一個社交類小程序時&#xff0c;遇到了需要實現用戶資料編輯和頭像上傳的需求。這個功能看似簡單&#xff0c;但要做好用戶體驗和兼容多端&#xff0c;還是有不少細節需要處理。經過一番摸索&#xff0c;總結出了一套…

科技的成就(六十八)

623、杰文斯悖論 杰文斯悖論是1865年經濟學家威廉斯坦利杰文斯提出的一悖論&#xff1a;當技術進步提高了效率&#xff0c;資源消耗不僅沒有減少&#xff0c;反而激增。例如&#xff0c;瓦特改良的蒸汽機讓煤炭燃燒更加高效&#xff0c;但結果卻是煤炭需求飆升。 624、代碼混…

榮耀手機,系統MagicOS 9.0 USB配置沒有音頻來源后無法被adb檢測到,無法真機調試的解決辦法

榮耀手機&#xff0c;系統MagicOS 9.0 USB配置沒有音頻來源后無法被adb檢測到&#xff0c;無法真機調試的解決辦法 前言環境說明操作方法 前言 一直在使用的uni-app真機運行榮耀手機方法&#xff0c;都是通過設置USB配置的音頻來源才能成功。突然&#xff0c;因為我的手機的系…

D-Pointer(Pimpl)設計模式(指向實現的指針)

Qt 的 D-Pointer&#xff08;Pimpl&#xff09;設計模式 1. Pimpl 模式簡介 Pimpl&#xff08;Pointer to Implementation&#xff09;是一種設計模式&#xff0c;用于將類的接口與實現分離&#xff0c;從而隱藏實現細節&#xff0c;降低編譯依賴&#xff0c;提高代碼的可維護…

MySQL 8.0 OCP 1Z0-908 101-110題

Q101.which two queries are examples of successful SQL injection attacks? A.SELECT id, name FROM backup_before WHERE name‘; DROP TABLE injection; --’; B. SELECT id, name FROM user WHERE id23 oR id32 OR 11; C. SELECT id, name FROM user WHERE user.id (SEL…

Vue ElementUI原生upload修改字體大小和區域寬度

Vue ElementUI原生upload修改字體大小和區域寬度 修改后 代碼 新增的修改樣式代碼 .upload-demo /deep/ .el-upload-dragger{width: 700px;height: 300px; }原有拖拽組件代碼 <!-- 拖拽上傳組件 --><el-uploadclass"upload-demo"dragaction"":m…