目錄
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]}") # 報錯行
錯誤原因
- 循環變量誤解:
for index in t9
?中,index
?實際是元組的元素值(如?"傳智教育"
?是字符串),而非索引(整數)。- 索引類型錯誤:
元組?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日
(注:此信為虛擬創作,李在明總統的公開立場以實際為準)