Python基礎學習筆記(七)——元組

目錄

  • 一、一維元組的介紹、創建與修改
  • 二、組合的基本操作
    • 1. 遍歷
    • 2. 取長度
    • 3. 取最值
    • 4. 打包
    • 5. 批處理
      • 5.1 map()函數
      • 5.2 lambda 表達式
      • 5.3 lambda 表達式 + map()函數

一、一維元組的介紹、創建與修改

??元組tuple),一種不可變、有序、可重復的數據結構,屬于不可變序列,由小括號()內、用逗號分隔的一組元素組成。

??與同為序列的列表一樣,元組的元素可以是任意數據類型的對象引用,并通過索引訪問元素;但區別于可變序列,我們無法直接對元組進行增刪改操作

??準確的說,應該是元組對對象的引用,也就是元素id不能改變。如果元素指向不可變對象,那么改變它通常指的是改變id;但如果元素指向可變對象,則可以修改值而內存地址不變

# 修改元組
t = (1, [2])
t[1][0] = 1print(t)
(1, [1])

??在實際應用中,不可變序列有一定優勢。為了防止多端同時操作發生混亂,通常會在某一端操作時,對數據結構上。在多任務環境下,同時操作多個可變對象需要加鎖,而不可變對象則不用。這是因為,它們只能被瀏覽或取出數據,而不能被修改,所以在程序中盡量使用不可變序列。

??與列表同理,元組同樣有賦值創建引用創建,對應類似的函數tuple()。我們可以通過tuple()list()實現元組的間接修改,即:使用list()函數把元組轉化成列表,然后在列表上進行修改,最后使用tuple()轉化回元組。

# 空元組
t = ()
t = tuple()# 賦值創建
t = (1,)  # 單元素元組的創建格式
t = (1, 2, 3)
t = 1, 2, 3  # 省略寫法# 引用創建
t = tuple([1, 2, 3])
print(t)# 間接修改
lst = list(t)
lst[0] = 0
t = tuple(lst)
print(t)
(1, 2, 3)
(0, 2, 3)


二、組合的基本操作

??元組屬于序列,適用于序列的所有基本操作,這部分內容在Python基礎學習筆記(六)——列表中,這里不再重復。

??以下操作適用于所有組合,包括列表、元組、字符串、集合、字典,下面主要以元組為例。

1. 遍歷

t = 1, 2, 3
for i in t:print(i)
1
2
3


2. 取長度

??len()函數:返回組合內的元素個數

t = 1, 2, 3
print(len(t))
3


3. 取最值

??max()函數:返回可迭代對象內元素的最大值
??min()函數:返回可迭代對象內元素的最小值

t = 1, 2, 3
print(max(t), min(t))
3 1


4. 打包

??zip()函數:將一個或多個可迭代對象對應元素依次打包成元組,并返回由這些元組組成的zip對象迭代器。若輸入的可迭代對象的長度不同,打包的元組數量取最短可迭代對象的長度

d = {'a': 1}                           
t = 1, 2                               
s = {'a', 'b', 'c'}   # 打包單個可迭代對象                          
for i in zip(d):                       print(i)          # 打包多個不同長度的可迭代對象        
print(list(zip(t, s)))                                                         
('a',)
[(1, 'c'), (2, 'a')]


5. 批處理

5.1 map()函數

??map(function, iterable)函數:對可迭代對象中的每一個元素調用指定函數,返回一個map對象迭代器

t = 1, 2for i in map(float, t):print(i)
1.0
2.0


5.2 lambda 表達式

??lambda表達式是一種匿名函數,可在非正式定義函數的情況下使用。它由關鍵字lambda開頭,后接參數列表,然后用冒號分隔,最后是一個表達式
??它們通常作為臨時函數,用于執行簡單操作或為其他函數傳遞參數

add = lambda x, y: x + y
print(add(2, 3))
5


5.3 lambda 表達式 + map()函數

??該模式允許我們更靈活地進行多個可迭代對象之間的自定義運算

t1 = 1, 2, 3
t2 = 11, 22, 33
t3 = 10, 20, 30
# 參數列表與iterable依次對應
print(list(map(lambda x, y, z: x*y-z, t1, t2, t3)))  
[1, 24, 69]

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

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

相關文章

SpringBoot如何開啟注解的形式,使用Redis Cache

Spring Cache 是一個框架,實現了基于注解的緩存功能,只需要簡單的添加注解,就能實現緩存功能。 Spring Cache 提供了一層抽象,底層可以切換不同的緩存實現,例如:Redis、EHCache、Caffeine等 步驟&#xf…

【大模型】Spring AI對接ChatGpt使用詳解

目錄 一、前言 二、spring ai介紹 2.1 什么是Spring AI 2.2 Spring AI 特點 2.3 Spring AI 為開發帶來的便利 2.4 Spring AI應用領域 2.4.1 聊天模型 2.4.2 文本到圖像模型 2.4.3 音頻轉文本 2.4.4 嵌入大模型使用 2.4.5 矢量數據庫支持 2.4.6 用于數據工程ETL框架 …

2024-05-22 VS2022使用modules

點擊 <C 語言編程核心突破> 快速C語言入門 VS2022使用modules 前言一、準備二、使用其一, 用VS installer 安裝模塊:第二個選項就是, 與你的代碼一同編譯std模塊, 這個非常簡單, 但是也有坑. 總結 前言 要解決問題: 使用VS2022開啟modules. 想到的思路: 跟著官方文檔整…

Java進階學習筆記19——內部類

1、 內部類&#xff1a; 是類中五大成分之一&#xff08;成員變量、方法、構造函數、內部類、代碼塊&#xff09;&#xff0c;如果一個類定義在另一個 類的內部&#xff0c;這個類就是內部類。 場景&#xff1a;當一個類的內部&#xff0c;包含了一個完整的事物&#xff0c;且…

Android ART 虛擬機簡析

源碼基于&#xff1a;Android U 1. prop 名稱選項名稱heap 變量名稱功能 dalvik.vm.heapstartsize MemoryInitialSize initial_heap_size_ 虛擬機在啟動時&#xff0c;向系統申請的起始內存 dalvik.vm.heapgrowthlimit HeapGrowthLimit growth_limit_ 應用可使用的 max…

Scikit-Learn樸素貝葉斯

Scikit-Learn樸素貝葉斯 1、樸素貝葉斯1.1、貝葉斯分類1.2、貝葉斯定理1.3、貝葉斯定理的推導1.4、樸素貝葉斯及原理1.5、樸素貝葉斯的優缺點2、Scikit-Learn樸素貝葉斯2.1、Sklearn中的貝葉斯分類器2.2、Scikit-Learn樸素貝葉斯API2.3、Scikit-Learn樸素貝葉斯實踐(新聞分類與…

Python——文件操作相關

1. 讀文件方式 第一種 有規律的名稱 第二種 無規律的名稱 2. 文件名稱 用 “{:05d}” 來規范輸出數字所占位數&#xff0c;例如&#xff1a; for i in range(100):gt_file Reference/ image "{:05d}".format(i) .jpgprint(gt_file)輸出&#xff1a; ... Re…

爬山算法的詳細介紹

目錄 &#x1f349;概述 &#x1f349; 步驟 &#x1f349; 優缺點 &#x1f348;優點 &#x1f348;缺點 &#x1f348;應對策略 &#x1f349;示例 &#x1f348;旅行商問題 &#x1f34d;步驟 &#x1f34d;分解代碼 &#x1f34e;包含頭文件 &#x1f34e;定義函…

Cortex-M3的SysTick 定時器

目錄 概述 1 SysTick 定時器 1.1 SysTick 定時器功能介紹 1.2 SysTick 定時器功能實現 1.3 SysTick在系統中的作用 2 SysTick應用的實例 2.1 建立異常服務例程 2.2 使能異常 2.3 鬧鐘功能 2.4 重定位向量表 2.5 消滅二次觸發 3 SysTick在FreeRTOS中的應用 3.1 STM…

【代碼】結構體

哈嘍大家好&#xff0c;我是學霸小羊&#xff0c;今天講講結構體。 先看例題&#xff1a; 例1.老師給了小楊一份同學們的考試成績&#xff0c;包括語數英三科&#xff0c;老師讓小明按照總分排序&#xff0c;請你幫幫他吧&#xff01; 輸入數據&#xff1a; 第1行 學生總人…

在docker中運行SLAM十四講程序

《十四講》的示例程序依賴比較多&#xff0c;而且系統有點舊。可以在容器中運行。 拉取鏡像 docker pull ddhogan/slambook:v0.1這個docker對應的github&#xff1a;HomeLH/slambook2-docker 拉下來之后&#xff0c;假如是Windows系統&#xff0c;需要使用XLaunch用于提供X11…

面試大雜燴之kafka

面試這個領域最近環境不行&#xff0c;所以卷起來流量挺大 關于K8s 其實看我之前的博客&#xff0c;k8s剛有點苗頭的時候我就研究過&#xff0c;然后工作的時候間接接觸 也自己玩過 但是用的不多就忘記了&#xff0c;正苦于不知道寫什么&#xff0c;水一篇 用來面試應該是夠了…

C++ | Leetcode C++題解之第111題二叉樹的最小深度

題目&#xff1a; 題解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

VC編譯sample_onnx_mnist提示無法打開輸入文件cudnn.lib

出現錯誤 LNK1181 無法打開輸入文件“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64\cudnn.lib” 解決辦法&#xff1a;下載cudnn&#xff0c;NVIDIA cuDNN | NVIDIA Developer 拷貝相應的文件到CUDA安裝的目錄下。 VC編譯libtorch提示無法打開輸入文件cu…

huggingface 筆記:PretrainModel

1 from_pretrained 從預訓練模型配置中實例化一個 PyTorch 預訓練模型默認情況下&#xff0c;模型使用 model.eval() 設置為評估模式&#xff08;Dropout 模塊被禁用&#xff09; 要訓練模型&#xff0c;應該首先使用 model.train() 將其設置回訓練模式 1.1 主要參數 pretra…

java 子類繼承父類

為什么需要繼承 我現在要有兩個類一個 一個是小學生&#xff0c;一個是大學生 代碼 小學生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

(三)MySQL 索引

歡迎訪問 什么是索引&#xff1f; 提高查詢效率的一種數據結構&#xff0c;索引是數據的目錄 索引的分類 按「數據結構」分類&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存儲」分類&#xff1a;聚簇索引、二級索引。按「字段特性」分類&#xff1a;主鍵索引…

Spring6 對 集成MyBatis 開發運用(附有詳細的操作步驟)

詳細實現操作步驟 具體實現內容&#xff1a;我們運用 Spring6 和 MyBatis 實現一個轉賬操作(該轉賬操作&#xff0c;進行一個事務上的控制&#xff0c;運用 MyBatis 執行 SQL 語句)。 第一步&#xff1a;準備數據庫表 使用t_act表&#xff08;賬戶表&#xff09; 連接數據庫的…

三個有意思的鏈表面試題的完成

上一篇博客我們已經完成了鏈表的所有內容&#xff0c;那么這一篇博客我們來看一下三個特別有意思的鏈表題目。 **第一個題目如下&#xff1a;**相信不少朋友看到這題目就已經暈了&#xff0c;那就簡單說明下這個題目&#xff0c;題目就是創建一個鏈表&#xff0c;其中每個節點…

深入探索Java中的流式編程:優雅地處理集合數據

Java流式編程&#xff08;Stream API&#xff09;是Java 8引入的一項重要特性&#xff0c;它為處理集合數據提供了一種更為優雅和函數式的方式。通過流式操作&#xff0c;開發者可以以更簡潔、更直觀的方式處理數據&#xff0c;從而提高代碼的可讀性和可維護性。本文將深入探討…