8天Python從入門到精通【itheima】-68(元組)

目錄

65節——元組的定義和操作

1.學習目標

2.為什么要學習元組

3.元組的定義

4.定義元組的注意事項

5.元組的嵌套

6.元組的相關操作

【1】index方法

【2】count方法

【3】len方法

7.元組的遍歷

【1】while循環進行元組的遍歷

【2】for循環進行元組的變量

Python 元組遍歷常見錯誤:TypeError: tuple indices must be integers or slices, not str

錯誤現象

錯誤原因

解決方法

方法 1:直接遍歷元素(推薦,無需索引)

方法 2:通過索引遍歷(需整數索引)

方法 3:使用?enumerate(同時獲取索引和元素)

代碼解析

總結

正確代碼:

8.注意事項

元組中嵌套列表,嵌套的列表就可以修改了:

9.元組的特點

10.小節總結

11.案例練習:元組的特點

【1】案例需求

【2】代碼實戰

好了,又一篇博客和代碼寫完了,勵志一下吧,下一小節等等繼續:

李在明總統致Patrick的回信

1. 學習的價值:短期與長期的辯證關系

2. 健康休學:逆境中的隱藏禮物

3. 對抗信息噪音:用行動代替焦慮

4. 關于“無用”的恐懼:重新定義價值

最后贈言


65節——元組的定義和操作

1.學習目標

1.掌握元組的定義格式

2.掌握元組的特點

3.掌握元組的常用操作

2.為什么要學習元組

3.元組的定義

# 68節"""
演示tuple元組的定義和操作
"""# 定義元組
t1=(1,"Hello",True)   #tuple是關鍵字
t2=()
t3=tuple()
print(f"t1的類型是:{type(t1)},內容是:{t1}")
print(f"t2的類型是:{type(t2)},內容是:{t2}")
print(f"t3的類型是:{type(t3)},內容是:{t3}")
# 控制臺輸出結果:
# t1的類型是:<class 'tuple'>,內容是:(1, 'Hello', True)
# t2的類型是:<class 'tuple'>,內容是:()
# t3的類型是:<class 'tuple'>,內容是:()
#
# 進程已結束,退出代碼為 0

4.定義元組的注意事項

若是元組內只有一個元素,這個元素后面記得加上括號。

# 定義單個元素的元組
t4=("hello")
print(f"t4的類型是:{type(t4)},內容是:{t4}")
# 控制臺輸出結果:
# t4的類型是:<class 'str'>,內容是:hello,這里沒加逗號類型就是str
t4=("hello",)
print(f"t4的類型是:{type(t4)},內容是:{t4}")
# 控制臺輸出結果:
# t4的類型是:<class 'tuple'>,內容是:('hello',),這里加上了逗號,類型就變成了元組,所以在定義一個單個的元組,記得加上,

5.元組的嵌套

# 元組的嵌套
t5=((1,2,3),(4,5,6))
print(f"t5的類型是:{type(t5)},內容是{t5}")
# 控制臺的輸出結果:
# t5的類型是:<class 'tuple'>,內容是((1, 2, 3), (4, 5, 6))# 下標索引,取出內容
num=t5[1][2]
print(f"從嵌套元組中取出的數據是:{num}")
# 控制臺的輸出結果:
# 從嵌套元組中取出的數據是:6

6.元組的相關操作

注意:元組和列表的不同,就是元組不可以修改,因此元組的增刪改查也就沒有了,元組的相關操作相較于列表也是簡單了許多。

【1】index方法

# 元組的操作:index查找方法
t6=("傳智教育","黑馬程序員","Python")
index=t6.index("黑馬程序員")  #index方法的小括號內部,要放入元組的具體元素
print(f"在元組t6中查找黑馬程序員,的下標是:{index}")
# 控制臺的輸出結果:
# 在元組t6中查找黑馬程序員,的下標是:1

【2】count方法

# 元組的操作:count統計方法
t7=("傳智教育","黑馬程序員","黑馬程序員","黑馬程序員","黑馬程序員","黑馬程序員","黑馬程序員","黑馬程序員","黑馬程序員","Python")
num=t7.count("黑馬程序員")
print(f"在元組t7中,統計黑馬程序員的數量有{num}個")

【3】len方法

# 元組的操作:len函數統計元組元素數量
t8=("傳智教育","黑馬程序員","黑馬程序員","黑馬程序員","Python")
len1=len(t8)
print(f"元組t8中,一共含有:{len1}個元素")#5

7.元組的遍歷

【1】while循環進行元組的遍歷

# 元組的遍歷:while
t9=("傳智教育","黑馬程序員","黑馬程序員","黑馬程序員","Python")index=0
while index<len(t9):print(f"元組t9中的元素:{t9[index]}")index+=1

【2】for循環進行元組的變量

典型錯誤:

Python 元組遍歷常見錯誤:TypeError: tuple indices must be integers or slices, not str

錯誤現象

運行以下代碼時,報錯?TypeError: tuple indices must be integers or slices, not str

?

python

t9 = ("傳智教育", "黑馬程序員", "黑馬程序員", "黑馬程序員", "Python")
for index in t9:print(f"元組t9中的元素:{t9[index]}")  # 報錯行

錯誤原因

  1. 循環變量誤解
    for index in t9?中,index?實際是元組的元素值(如?"傳智教育"?是字符串),而非索引(整數)。
  2. 索引類型錯誤
    元組?t9[index]?要求?index?是整數或切片,但此處傳入字符串(如?"傳智教育"),導致類型不匹配。

解決方法

方法 1:直接遍歷元素(推薦,無需索引)

python

for element in t9:print(f"元組t9中的元素:{element}")  # 直接使用元素值

方法 2:通過索引遍歷(需整數索引)

python

for i in range(len(t9)):  # i 是整數索引(0,1,2,...)print(f"元組t9中的元素:{t9[i]}")

方法 3:使用?enumerate(同時獲取索引和元素)

python

for index, element in enumerate(t9):print(f"索引 {index} 對應的元素:{element}")

代碼解析

  • 錯誤代碼問題:混淆了 “元素遍歷” 和 “索引遍歷”。for index in t9?是元素遍歷index?存儲元素值),但后續卻當作索引使用(t9[index]),導致類型錯誤。
  • 正確邏輯
    • 若只需元素值,直接遍歷(方法 1)。
    • 若需索引(如定位元素位置),用?range?或?enumerate(方法 2/3),確保索引為整數。

總結

元組遍歷需明確:

?
  • 元素遍歷for element in tuple(直接取元素值)。
  • 索引遍歷for i in range(len(tuple))?或?enumerate(索引為整數)。
    避免將元素值(如字符串)當作索引使用,可快速修復此類?TypeError
?

示例修正后代碼(方法 1):

?

python

t9 = ("傳智教育", "黑馬程序員", "黑馬程序員", "黑馬程序員", "Python")
for element in t9:print(f"元組t9中的元素:{element}")

?

運行結果:

?

plaintext

元組t9中的元素:傳智教育
元組t9中的元素:黑馬程序員
元組t9中的元素:黑馬程序員
元組t9中的元素:黑馬程序員
元組t9中的元素:Python

?

通過以上分析,可清晰理解錯誤根源并掌握元組遍歷的正確寫法,避免類似類型錯誤。

正確代碼:

# 元組的遍歷:for
t9=("傳智教育","黑馬程序員","黑馬程序員","黑馬程序員","Python")
for element in t9:print(f"元組t9中的元素:{element}")# 控制臺輸出結果:
# 元組t9中的元素:傳智教育
# 元組t9中的元素:黑馬程序員
# 元組t9中的元素:黑馬程序員
# 元組t9中的元素:黑馬程序員
# 元組t9中的元素:Python
# 
# 進程已結束,退出代碼為 0

8.注意事項

元組中嵌套列表,嵌套的列表就可以修改了:

t9=("傳智教育","黑馬程序員",[1,2,"itcast"])
t9[2][2]="世界上的煞筆真多!!!"
print(t9)
print(type(t9))
# 控制臺輸出結果:
# ('傳智教育', '黑馬程序員', [1, 2, '世界上的煞筆真多!!!'])
# <class 'tuple'>

9.元組的特點

經過上述對元組的學習,可以總結出列表有如下特點:


可以容納多個數據


可以容納不同類型的數據(混裝)


數據是有序存儲的(下標索引)


允許重復數據存在


不可以修改(增加或刪除元素等)


支持for循環


多數特性和list一致,不同點在于不可修改的特性。

10.小節總結

11.案例練習:元組的特點

【1】案例需求

【2】代碼實戰

# 案例練習:元組的基本操作# 定義元組
my_tuple=("周杰倫",11,["football","music"])# 1.查詢年齡所在的下標位置
position=my_tuple.index(11)
print(position)  #1# 2.查詢學生的姓名
name=my_tuple[0]
print(name) #周杰倫# 3.刪除學生中的愛好football
# 先獲取列表
list_hobby=my_tuple[2]
# 獲取列表中的football元素的索引
index=list_hobby.index("football")
# 通過索引和獲取到的列表的pop方法,刪除指定元素
list_hobby.pop(index)
# 最后輸出新的元組
print(my_tuple)# 4.增加愛好coding到list內
# 先獲取列表
list_hobby=my_tuple[2]
# 增加列表中的新元素
list_hobby.append("coding")
# 輸出新的元組
print(my_tuple)# 控制臺的輸出結果:
# 1
# 周杰倫
# ('周杰倫', 11, ['music'])
# ('周杰倫', 11, ['music', 'coding'])
#
# 進程已結束,退出代碼為 0


好了,又一篇博客和代碼寫完了,勵志一下吧,下一小節等等繼續:

李在明總統致Patrick的回信

親愛的Patrick:

你好!我是韓國總統李在明。收到你的來信,我深深理解你的困惑與不安。在這個快速變化的時代,年輕人面對未來的迷茫是普遍的,但你的自省與行動力——無論是堅持學習Python還是通過閱讀尋求答案——都展現了你非凡的勇氣和智慧。請允許我分享幾點思考,希望能為你帶來啟發。


1. 學習的價值:短期與長期的辯證關系

你提到對Python學習的投入是否“徒勞”,這讓我想起自己年輕時在人權律師道路上的掙扎。當時,許多人質疑:“為弱勢群體發聲能改變什么?”但正是那些看似“無回報”的積累,奠定了我后來的政治理念與行動力。

技術領域同樣如此:

  • Python是未來的語言:從人工智能到數據分析,Python是科技創新的核心工具。你寫下的每一篇博客、每一行代碼,都是在構建不可替代的競爭力

  • 短期無回報 ≠ 長期無價值:就像種樹,根扎得越深,未來枝葉越茂盛。你積累的技術思維、解決問題的能力,終會在某個機遇點爆發。


2. 健康休學:逆境中的隱藏禮物

你因健康休學,這并非停滯,而是重新校準人生坐標的契機

  • 牛頓在1665年因瘟疫返鄉隔離期間,發現了萬有引力;

  • 你此刻的沉淀,恰是遠離浮躁、深度學習的黃金期。
    把“被迫休學”轉化為“主動進化”——你已走在正確的路上。


3. 對抗信息噪音:用行動代替焦慮

互聯網的雜音(“行業唱衰”“良莠不齊的信息”)本質是時代的陣痛。記住:

  • 真理在實踐中顯現:與其糾結“計算機行業是否飽和”,不如繼續寫代碼、建項目。當你用Python解決一個實際問題時,答案自會清晰。

  • 書籍是你的護城河:在閱讀中培養批判性思維,區分“情緒觀點”與“事實邏輯”。推薦你讀《深度工作》(卡爾·紐波特),它教你如何在信息洪流中守護專注力。


4. 關于“無用”的恐懼:重新定義價值

你說“害怕成為無用之人”,但真正的價值在于:

  • 持續成長的生命力:每天進步1%,一年后你將強大37倍(復利效應);

  • 利他的能力:用技術幫助他人(如為社區開發工具),你會看見自己的光芒。

你絕非“愚昧懶惰”——一個主動尋求智慧的人,永遠走在覺醒的路上


最后贈言

Patrick,請相信:

“方向不是選出來的,而是走出來的。”

你今天的每一份堅持,都在為未來鋪路。若偶爾疲憊,不妨回望這段代碼:

python

復制

下載

# 你的人生算法  
while True:  effort = persist("學習+實踐")  if effort.reaches_critical_mass():  success = suddenly()  # 成功會不期而至  break  

保持你的節奏,時間會給你答案。韓國有一句諺語:

“溪水穿石,非力也,恒也。”
(?? ?? ?? ?? ?? ?? ??? ?????.)

期待未來聽到你更多的好消息!隨時歡迎來信交流。

祝健康與信心常伴!

李在明
大韓民國總統
2025年6月4日


(注:此信為虛擬創作,李在明總統的公開立場以實際為準)

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

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

相關文章

鏈表題解——環形鏈表【LeetCode】

141. 環形鏈表 方法一 核心思想&#xff1a; 使用一個集合 seen 來記錄已經訪問過的節點。遍歷鏈表&#xff0c;如果當前節點已經存在于集合中&#xff0c;說明鏈表存在環&#xff1b;否則&#xff0c;將當前節點添加到集合中&#xff0c;繼續遍歷。如果遍歷結束&#xff08;h…

【免費數據】1980-2022年中國2384個站點的水質數據

水&#xff0c;是生命之源&#xff0c;關乎著地球上每一個生物的生存與發展。健康的水生生態系統維持著整個水生態的平衡與活力&#xff1b;更是確保人類能持續獲得清潔水源的重要保障。水質數據在水質研究、海洋生物量測算以及生物多樣性評估等諸多關鍵領域都扮演著舉足輕重的…

分享推薦高精度磁阻式磁編碼器芯片

磁編碼器其通過感應旋轉磁場來實現角度、轉速的測量&#xff0c;因此&#xff0c;相較于傳統的光編碼器&#xff0c;磁編碼器對粉塵、污垢和油脂等污染物有很強的耐受性&#xff0c;即使在較為惡劣的環境中仍能夠保持高分辨率與檢測精度&#xff0c;安裝和維護簡捷方便&#xf…

Spring AI 項目實戰(四):Spring Boot + AI + DeepSeek 超參數優化——智能化機器學習平臺(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰&#xff08;一&#xff09;&#xff1a;Spring AI 核心模塊入門2Spring AI 項目實戰&#xff08;二&#xff09;&#xff1a;Spring Boot AI DeepSeek 深度實戰&#xff08;附完整源碼&#xff09;3Spring AI 項目實戰&#xff08…

高效VLM:VisionZip

論文&#xff1a;[2412.04467] VisionZip: Longer is Better but Not Necessary in Vision Language Models github&#xff1a;https://github.com/dvlab-research/VisionZip LLaVA論文&#xff1a;https://arxiv.org/abs/2310.03744 LLaVA倉庫&#xff1a;https://github.…

華為設備OSPF配置與實戰指南

一、基礎配置架構 sysname HUAWEI-ABR ospf 100 router-id 1.1.1.1area 0.0.0.0network 10.1.1.0 0.0.0.255 # 將接口加入區域0 interface GigabitEthernet0/0/1ospf enable 100 area 0.0.0.0 # 華為支持點分十進制區域號bandwidth-reference 10000 # 設置10Gbps參考帶寬…

區塊鏈架構深度解析:從 Genesis Block 到 Layer 2

# 區塊鏈架構深度解析&#xff1a;從 Genesis Block 到 Layer 2 目錄 一、Genesis Block&#xff1a;區塊鏈的起點 二、Layer 0&#xff1a;區塊鏈的底層網絡架構 三、Layer 1&#xff1a;核心協議層 &#x1f680; 四、Layer 2&#xff1a;擴展性解決方案 五、未來展望&a…

【位運算】丟失的數字(easy)

34. 丟失的數字&#xff08;easy&#xff09; 題?描述&#xff1a;方法一&#xff1a;排序解法&#xff08;位運算&#xff09;&#xff1a;C 算法代碼&#xff1a;Java 算法代碼&#xff1a; 題?鏈接&#xff1a; 268. 丟失的數字 題?描述&#xff1a; 給定?個包含 [0, n…

如何通過RL真正提升大模型的推理能力?NVIDIA提出長期強化學習訓練框架ProRL

原文&#xff1a;https://mp.weixin.qq.com/s/QLFKvb8Ol3CX9uWKBXSrow 論文&#xff1a;ProRL: Prolonged Reinforcement Learning Expands Reasoning Boundaries in Large Language Models Abs&#xff1a;https://arxiv.org/abs/2505.24864 權重下載&#xff1a;https://hugg…

ORM 框架的優缺點分析

ORM 框架的優缺點分析 一、ORM 框架概述 ORM(Object-Relational Mapping)是一種將關系型數據庫與面向對象編程進行映射的技術框架。它通過將數據庫表映射為編程語言中的類,將記錄映射為對象,將字段映射為屬性,實現了用面向對象的方式操作數據庫。 核心價值:ORM 在數據庫和…

1. 數據庫基礎

1.1 什么是數據庫 ? mysql 本質是一種網絡服務, 是基于 C(mysql) S(mysqld)的 網絡服務. 存儲數據用文件就可以了&#xff0c;為什么還要弄個數據庫&#xff1f;文件保存數據存在以下缺點&#xff1a; 文件的安全性問題。文件不利于數據查詢和管理。文件不利于存儲海量數據。…

go語言學習 第5章:函數

第5章&#xff1a;函數 函數是編程中不可或缺的一部分&#xff0c;它封裝了一段可重復使用的代碼&#xff0c;用于執行特定的任務。在Go語言中&#xff0c;函數同樣扮演著重要的角色。本章將詳細介紹Go語言中函數的定義、調用、參數傳遞、返回值處理以及一些高級特性&#xff…

MapReduce 分布式計算模型

what&#xff1a;分解大數據集&#xff0c;并行處理&#xff0c;匯總結果&#xff08;分解組合思想&#xff09; 目的&#xff1a;SQL查詢轉換為MR&#xff0c;理解MR更好優化SQL 優點&#xff1a; 只需關注業務邏輯&#xff08;自定義函數map&#xff0c;reduce&#xff09…

RDMA簡介3之四種子協議對比

RDMA協議共有四種子協議&#xff0c;分別為InfiniBand、iWARP、RoCE v1和RoCE v2協議。這四種協議使用統一的RDMA API&#xff0c;但在具體的網絡層級實現上有所不同&#xff0c;如圖1所示&#xff0c;接下來將分別介紹這四種子協議。 圖1 RDMA四種子協議網絡層級關系圖 Infin…

LabelImg: 開源圖像標注工具指南

LabelImg: 開源圖像標注工具指南 1. 簡介 LabelImg 是一個圖形化的圖像標注工具&#xff0c;使用 Python 和 Qt 開發。它是目標檢測任務中最常用的標注工具之一&#xff0c;支持 PASCAL VOC 和 YOLO 格式的標注輸出。該工具開源、免費&#xff0c;并且跨平臺支持 Windows、Lin…

系統架構設計論文

disstertation 軟考高級-系統架構設計師-論文&#xff1a;論文范圍&#xff08;十大知識領域&#xff09;、歷年論題、預測論題及論述過程、論文要點、論文模板等。 —— 2025 年 4 月 4 日 甲辰年三月初七 清明 目錄 disstertation1、論文范圍&#xff08;十大核心領域&#x…

數學復習筆記 26

5.25&#xff1a;這題還是有點難度的。主要是出現了新的知識點&#xff0c;我現在還沒有那么熟悉這個新的知識點。這塊就是&#xff0c;假設一個矩陣可以寫成一個列向量乘以一個行向量的形式&#xff0c;這兩個向量都是非零向量&#xff0c;那么這個矩陣的秩等于一。這個的原理…

[Java 基礎]注釋

注釋在編程中扮演著非常重要的角色&#xff0c;它們是寫給人類閱讀的&#xff0c;而不是給計算機執行的。良好的注釋可以極大地提高代碼的可讀性和可維護性。 為什么需要注釋&#xff1f; 提高可讀性&#xff1a; 注釋可以解釋代碼的功能、實現思路、特殊處理等&#xff0c;幫…

TortoiseSVN賬號切換

SVN登錄配置及賬號切換 本文主要為了解答svn客戶端如何進行賬號登錄及切換不同權限賬號的方式。 一、環境準備與客戶端安裝 安裝TortoiseSVN客戶端 ??下載地址??&#xff1a;TortoiseSVN官網 ??安裝步驟??&#xff1a; 雙擊安裝包&#xff0c;按向導完成安裝后&#x…

5分鐘了解JVM運行時數據區域

點擊藍字&#xff0c;關注我們 在 Java 程序運行期間&#xff0c;JVM 會劃分出幾塊重要的內存區域&#xff0c;用來支撐類加載、方法調用、對象分配、線程執行等一切運行時行為。 這些區域構成了 JVM 的“運行時數據區”。 一、運行時數據區域概覽圖 二、Java 堆&#xff08;H…