Python編程學習第一篇——Python零基礎快速入門(五)—元組(Tuple)操作

Python元組是一種不可變的有序集合,可以存儲多個不同類型的數據。元組使用小括號來表示,其中的元素用逗號分隔開。與列表不同,元組的元素不能被修改、刪除或添加。它的一些常規操作包括元組的創建、訪問、添加、修改、刪除、運算等等,下面我們一起來學習。

一、創建元組

代碼如下:

1

2

3

tup1?=?('Python',?'Java',?'Basic',?'C')

tup2?=?(1,?2,?3,?4?)

tup3?=?"a",?"b",?"c",?"d"

創建空元組:

代碼如下:

1

tup1?=?()

元組中只包含一個元素時,需要在元素后面添加逗號來消除歧義

代碼如下:

1

tup1?=?(350,)

元組與字符串類似,下標索引從0開始,可以進行截取,組合等。

二、訪問元組
元組可以使用下標索引來訪問元組中的值,如下實例:

1

2

3

4

5

6

7

8

9

10

11

12

代碼如下:

#!/usr/bin/python

tup1?=?('Python',?'GLang',?'C++', 'Java')

tup2?=?(1,?2,?3,?4,?5,?6,?7, 8?)

print(?"tup1[0]: ", tup1[0])

print("tup2[1:5]: ", tup2[1:5])

#以上實例輸出結果:

#tup1[0]:? Python

#tup2[1:5]:? [2, 3, 4, 5]

三、修改元組
元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如下實例:

代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/python

??

tup1?=?(12,?34)

tup2?=?('hello',?'world')

# 以下修改元組元素操作是非法的。

# tup1[0] = 88

# 創建一個新的元組

tup3?=?tup1?+?tup2

print(tup3)

#以上實例輸出結果:

#(12, 34, 'hello', 'world')

四、刪除元組
元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組,如下實例:

代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#!/usr/bin/python

??

tup?=?('Python',?'Java',?'Basic',?'C');

print(tup)

del?tup

print("After deleting tup : ")

print(tup)

#以上實例元組被刪除后,輸出變量會有異常信息,輸出如下所示:

#('Python',?'Java',?'Basic',?'C')

#After deleting tup :

#Traceback (most recent call last):

#? File "test.py", line 9, in <module>

#??? print tup;

#NameError: name 'tup' is not defined[/code]

五、元組運算符
與字符串一樣,元組之間可以使用 + 號和 * 號進行運算。這就意味著他們可以組合和復制,運算后會生成一個新的元組。

比如元組拼接:

???可以使用"+"操作符將兩個元組拼接起來。例如:`new_tup = tup1 + tup2`

元組重復:

? ?可以使用"*"操作符將元組重復指定的次數。例如:`new_tup = tup * 3`

六、元組索引,截取
在Python中,你可以使用切片操作來截取元組。元組切片的語法與字符串切片的語法相同:

tuple[start:stop:step]

其中:

  • start?是切片開始的索引(包括該索引對應的元素)。

  • stop?是切片結束的索引(不包括該索引對應的元素)。

  • step?是步長(默認為1,可省略)。

如果你想截取元組的一部分,可以這樣做:

# 定義一個元組
t = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# 截取索引1到7的元素,步長為2
sub_t = t[1:7:2]
print(sub_t) 

# 輸出: (2, 4, 6)

七、無關閉分隔符
任意無符號的對象,以逗號隔開,默認為元組,如下實例:

代碼如下:

1

2

3

4

5

6

#!/usr/bin/python

??

print?('abc',?-4.24e93,?18+6.6j,?'xyz')

x, y?=?1,?2

print?("Value of x , y : ", x,y)

以上實例允許結果:

代碼如下:

1

2

abc?-4.24e+93?(18+6.6j) xyz

Value of x , y :?1?2

八、元組內置函數
Python元組包含了以下內置函數
1、cmp(tuple1, tuple2):比較兩個元組元素。
2、len(tuple):計算元組元素個數。
3、max(tuple):返回元組中元素最大值。
4、min(tuple):返回元組中元素最小值。
5、tuple(seq):將列表轉換為元組。

九、對元組的一些認識:

tuple和list非常類似,但是tuple一旦初始化就不能修改,比如同樣是列出同學的名字:

代碼如下:

1

>>> classmates?=?('小明',?'小紅',?'小剛')

現在,classmates這個tuple不能變了,它也沒有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用classmates[0],classmates[-1],但不能賦值成另外的元素。
不可變的tuple有什么意義?因為tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就盡量用tuple。
tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來,比如:

代碼如下:

1

2

3

>>> t?=?(1,?2)

>>> t

(1,?2)

來看一個元組的特殊情況,下面是當元組中有可變無素的情況:

代碼如下:

1

2

3

4

5

>>> t?=?('a',?'b', ['A',?'B'])

>>> t[2][0]?=?'X'

>>> t[2][1]?=?'Y'

>>> t

('a',?'b', ['X',?'Y'])

這個tuple定義的時候有3個元素,分別是'a','b'和一個list。不是說tuple一旦定義后就不可變了嗎?怎么后來又變了?

別急,我們先看看定義的時候tuple包含的3個元素:
?

tuple-0


當我們把list的元素'A'和'B'修改為'X'和'Y'后,tuple變為:
?

tuple-1


表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list并沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
理解了“指向不變”后,要創建一個內容也不變的tuple怎么做?那就必須保證tuple的每一個元素本身也不能變。

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

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

相關文章

電力電子功率模塊在工程應用中測溫NTC的使用

電力電子功率模塊在工程應用中測溫NTC的使用 1.概述2.什么是NTC3.模塊內部NTC3.1 絕緣隔離措施3.2 NTC熱量考慮 4.使用模擬方法測量NTC溫度4.1 分壓電阻大小 5.使用數字方法測量NTC溫度 1.概述 最近做項目的時候突然被問到一個問題。做實驗測溫用的NTC到底怎么用&#xff1f;為…

【Python】超時請求或計算的處理

超時機制 一般應用于處理阻塞問題 場景&#xff1a; 復雜度較大的計算&#xff08;解析&#xff09;某個數值、加解密計算等請求中遇到阻塞&#xff0c;避免長時間等待網絡波動&#xff0c;避免長時間請求&#xff0c;浪費時間 1. requests 請求超時機制 reqeusts 依賴中的…

[大師C語言(第十九篇)]C語言函數式編程技術詳解

引言 函數式編程&#xff08;Functional Programming&#xff0c;FP&#xff09;是一種編程范式&#xff0c;強調通過使用純函數和不可變數據來編寫代碼。這種范式具有許多優點&#xff0c;如易于測試、可維護性高、并發友好等。盡管C語言被認為是一種過程式編程語言&#xff…

JAVA設計模式-策略模式及在Springboot2.X中寫法

JAVA設計模式-策略模式及在Springboot2.X中寫法 一、經典的策略模式寫法二、Springboot2.X中策略模式寫法 策略模式的定義&#xff1a;策略模式是一種行為型設計模式,定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換 策略模式&#xff1a;在策略模式&#xff08;Str…

算法 java 排序和查找

排序和查找 冒泡排序&#xff08;穩定&#xff09;選擇排序&#xff08;不穩定&#xff09;插入排序&#xff08;穩定&#xff09;希爾排序&#xff08;不穩定&#xff09;歸并排序&#xff08;穩定&#xff09;快速排序&#xff08;不穩定&#xff09;堆排序計數排序桶排序基數…

YOLOv8+PyQt5海洋船只檢測(可以重新訓練,yolov8模型,從圖像、視頻和攝像頭三種路徑識別檢測)

1.效果視頻&#xff1a;海洋船只檢測yoloV8檢測&#xff08;https://mbd.pub/o/bread/mbd-ZpaYk55r&#xff09;_嗶哩嗶哩_bilibili資源包含可視化的海洋船只檢測系統&#xff0c;可對于高空拍攝到的海洋圖片進行輪船檢測&#xff0c;基于最新的YOLOv8訓練的海洋船只檢測模型&a…

多線程知識-11

Runnable 和 Thread 用哪個好 使用Runnable接口的好處是&#xff1a; 避免了單繼承的限制&#xff1a;當你的類已經繼承了另一個類時&#xff0c;你仍然可以實現Runnable接口來創建線程。提高代碼的復用性&#xff1a;你可以將Runnable對象傳遞給多個線程來執行&#xff0c;從…

C++設計模式-策略模式,AI角色動態選擇行為

運行在VS2022&#xff0c;x86&#xff0c;Debug下。 27. 策略模式 策略模式讓算法的選擇與使用獨立開來&#xff0c;使得代碼更靈活、可擴展和易維護。應用&#xff1a;如在游戲開發中&#xff0c;AI角色需要根據環境和條件做出不同的行為&#xff0c;如尋路、攻擊、躲避等。可…

深度解析CSS中為什么會有Stacking Context的概念

CSS中的堆疊上下文&#xff08;Stacking Context&#xff09;概念是為了管理和控制網頁元素的重疊順序而引入的。堆疊上下文的引入解決了以下幾個關鍵問題&#xff1a; 層次管理&#xff1a; 在網頁中&#xff0c;多個元素可能會相互重疊&#xff0c;堆疊上下文定義了這些元素的…

01-CompressionWebpackPlugin---提高 Web 應用性能的利器

CompressionWebpackPlugin—提高 Web 應用性能的利器 筆記分享 在現代 Web 開發中&#xff0c;優化資源加載速度是提升用戶體驗的重要環節。減少文件大小可以顯著提升網頁加載速度&#xff0c;從而改善用戶體驗。CompressionWebpackPlugin 是一個強大的 Webpack 插件&#xff…

【安裝筆記-20240529-Windows-Electerm 終端工具】

安裝筆記-系列文章目錄 安裝筆記-20240529-Windows-Electerm 終端工具 文章目錄 安裝筆記-系列文章目錄安裝筆記-20240529-Windows-Electerm 終端工具 前言一、軟件介紹名稱&#xff1a;Wireshark主頁官方介紹功能特性 二、安裝步驟測試版本&#xff1a;electerm-1.39.35-win-…

【藍橋杯】常見的數據結構

&#x1f338;個人主頁&#xff1a;Yang-ai-cao &#x1f4d5;系列專欄&#xff1a;藍橋杯 C語言 &#x1f34d;博學而日參省乎己&#xff0c;知明而行無過矣 目錄 &#x1f338;個人主頁&#xff1a;Yang-ai-cao &#x1f4d5;系列專欄&#xff1a;藍橋杯 C語言 &…

Spring項目中Ordered接口的應用:全局過濾器(GlobalFilter)的順序控制

在Spring框架&#xff0c;尤其是Spring Cloud Gateway或Spring WebFlux項目中&#xff0c;Ordered接口扮演著重要的角色&#xff0c;特別是在實現全局過濾器(GlobalFilter)時&#xff0c;用于控制過濾器執行的優先級。下面將介紹如何在Spring項目中使用Ordered接口來管理Global…

【AIoT-Robot】3d hand pose

手語是聾啞人士的主要溝通工具,它是利用手部和身體的動作來傳達意義。雖然手語幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個溝通障礙是源于大部分人不懂得手語。 1. 手勢&&手語 手勢:手的姿勢 ,通常稱作手勢。它指的是人在運用手臂時,所…

初識springcloud

springcloud eureka eureka的作用 消費者該如何獲取服務提供者具體信息&#xff1f; 服務提供者啟動時向eureka注冊自己的信息,eureka保存這些信息消費者,根據服務名稱向eureka拉取提供者信息 如果有多個服務提供者&#xff0c;消費者該如何選擇&#xff1f; 服務消費者利…

創建模塊

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;自定義模塊有兩個作用&#xff1a;一個是規范代碼&#xff0c;讓代碼更易于閱讀&#xff0c;另一個是方便其他程序使用已經編…

ORACLE創建dblink

dblink的作用 dblink數據庫鏈接顧名思義就是數據庫的鏈接&#xff0c;當我們要跨本地數據庫&#xff0c;訪問另外一個數據庫表中的數據時&#xff0c;本地數據庫中就必須要創建遠程數據庫的dblink&#xff0c;通過dblink本地數據庫可以像訪問本地數據庫一樣訪問遠程數據庫表中…

Ubuntu22.04之解決:terminal使用alt+1/alt+2/alt+3失效問題(二百三十八)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…

安卓玩機搞機技巧綜合資源----電腦控制手機 投屏操控的軟件工具操作步驟解析【二十二】

接上篇 安卓玩機搞機技巧綜合資源------如何提取手機分區 小米機型代碼分享等等 【一】 安卓玩機搞機技巧綜合資源------開機英文提示解決dm-verity corruption your device is corrupt. 設備內部報錯 AB分區等等【二】 安卓玩機搞機技巧綜合資源------EROFS分區格式 小米紅…

外發郵件監控的六種方法, 監控軟件如何防止郵件泄密?

外發郵件監控的六種方法&#xff0c; 監控軟件如何防止郵件泄密&#xff1f; 外發郵件監控是現代企業信息安全管理的重要組成部分&#xff0c;它有助于防止敏感信息泄露、保護知識產權、以及確保企業合規。以下是外發郵件監控的幾種主要方法&#xff0c;這些方法結合使用可以為…