python基礎-基本數據類型深入-2.1

目錄

元組

什么是元組(tuple)

元組練習-1

元組的基本操作

元組常用內建函數

列表和元組的區別與總結

元組練習-2

元組練習-3

元組

什么是元組(tuple)

與列表(list)一樣,元組(tuple)也是序列,唯一的區別在于元組是不能修改的(你可能注意到了,字符串也不能修改)。元組語法很簡單,只要將一些變量用逗號(,)分隔,就能自動創建一個元組。


a = 1,2,3
print(a)print((1,2,3))

1、元組還可用圓括號(())括起(這也是通常采用的做法)。

2、空元組用兩個不包含任何內容的圓括號表示。

3、如何表示只包含一個值的元組呢?這有點特殊:雖然只有一個值,也必須在它后面加上逗號。

print((12),type((12)))print((12,),type((12,)))輸出:12 <class 'int'>
(12,) <class 'tuple'>

由此可見,加上逗號就變成了元組!

元組練習-1
定義一個元組描述
請從標準輸入流(控制臺)中獲取一個整型數字變量 num_1,一個字符串變量 num_2,請你定義一個元組,包含這兩個變量,并打印出來這個元組和它的類型。

num_1 = int(input())
num_2 = eval(input())tuple_1 = (num_1,num_2)
print(tuple_1)
print(type(tuple_1))

元組的基本操作

創建一個元組(tuple)

通過將所有項目(元素)放在括號內 ()(以逗號(,)分隔)來創建元組。括號是可選的,但是,使用括號是一個好習慣。

元組可以具有任意數量的項,并且它們可以具有不同的類型(整數(int),浮點數(float),列表(list),字符串(string)等)。

也可以在不使用括號的情況下創建元組。這稱為元組包裝。

用一個元素創建一個元組有點特殊。

只有一個元素的元組,括號內僅包含一個元素是不夠的。我們將需要一個逗號結尾來表明它實際上是一個元組。


tuple_1 = ("hi")
print(type(tuple_1))tuple_2 = (1)
print(type(tuple_2))tuple_3 = ("hi",)
print(type(tuple_3))tuple_4 = (1.2)
print(type(tuple_4))輸出:
<class 'str'>
<class 'int'>
<class 'tuple'>
<class 'float'>

可以看到,元組可以存儲多種數據類型!


訪問元組元素

我們可以通過多種方式訪問元組的元素。

1.索引

我們可以使用索引運算符 [] 訪問索引從 0 開始的元組中的項目。

因此,具有 6 個元素的元組將具有從 05 的索引。嘗試訪問元組之外的元素(例如 67...)將引發 IndexError

索引必須是整數;因此我們不能使用 float 或其他類型。如果使用會導致 TypeError


2.負索引

Python 允許對其序列進行負索引。

索引 -1 表示最后一項,-2 表示倒數第二項,依此類推。

tuple_1 = ('h','e','l','l','o','1')print(tuple_1[-1])
print(tuple_1[-6])輸出:
1
h

3.切片

我們可以使用切片運算符冒號 : 訪問元組中的一系列項目。

tuple_1 = ('h','e','l','l','o','1')print(tuple_1[2:5])
print(tuple_1[0:5])輸出:
('l', 'l', 'o')
('h', 'e', 'l', 'l', 'o')

4、更換元組

與列表不同,元組是不可變的。

這意味著一旦分配了元組的元素就無法更改。但是,如果元素本身是可變的數據類型(如列表),則可以更改其嵌套項目。

我們還可以將元組分配給不同的值(重新分配)。

# 定義一個內嵌列表的元組
tuple_1 = (4, 2, [3], [9])
# 對列表進行添加操作
tuple_1[2].append(5)
print(tuple_1)
my_tuple = ("shell","bash")
# 將元組分配給不同的值
tuple_2 = my_tuple
print(tuple_2)輸出:
(4, 2, [3, 5], [9])
('shell', 'bash')

我們可以使用 + 運算符來合并兩個元組。這也稱為串聯

我們還可以使用運算符 *,將元組中的元素重復給定次數。

無論 +* 操作會導致新的記錄。

tuple_1 = (1, 2, 3)
tuple_2 = (4, 5, 6)
# 合并兩個元組并賦值給新的變量
tuple_3 = tuple_1 + tuple_2
print(tuple_3)
# 將元組中的元素重復 3 次
tuple_4 = ("shell",) * 3
print(tuple_4)輸出:
(1, 2, 3, 4, 5, 6)
('shell', 'shell', 'shell')

5、刪除元組

我們不能更改元組中的元素。這也意味著我們無法刪除或刪除元組中的項目。

但是可以使用關鍵字 del 完全刪除一個元組。

tuple_1 = ('s','h','e','l','l')# 不能刪除條目
# TypeError: 'tuple_1'對象不支持項目刪除
# del my_tuple[3]# 可以刪除整個元組
del tuple_1# NameError: 未定義名稱“ tuple_1”
print(tuple_1) #如果使用del刪除元組,再次打印就會報錯!

元組常用內建函數

1、元組方法

元組(tuple)不提供添加項目或刪除項目的方法。僅以下兩種方法可用。

方法描述
count(x)返回元組內相同元素的數量 x
index(x)返回等于 x 的第一項的索引
my_tuple = ('h','e','l','l','o',)print(my_tuple.count('e'))
print(my_tuple.index('l'))輸出:
1
2

2、其他元組操作

2.1元組成員資格測試

我們可以使用關鍵字 in 來測試項目是否存在于元組中。

tuple_1= ('h','e','l','l','o',)
print('s' in tuple_1)
print('l' in tuple_1)輸出:False
True

2.2遍歷元組

使用 for 循環,我們可以遍歷元組中的每個元素。

for ls in ('shell','bash'):print("hello",ls)輸出:
hello shell
hello bash

元組相比于列表的優勢

由于元組與列表非常相似,因此它們在類似情況下也都使用。

但是,在列表上實現元組具有某些優點。下面列出了一些主要優點:

  • 我們通常將元組用于異構(不同)數據類型,將列表用于同類(相似)數據類型。
  • 由于元組是不可變的,因此遍歷元組要比使用list更快。因此,性能略有提升。
  • 包含不可變元素的元組可以用作字典的鍵。對于列表,這是不可能的。
  • 如果您擁有不變的數據,則將其實現為元組可以確保其保持寫保護。

列表和元組的區別與總結

列表(list)

  1. 列表是動態數組,可變(增加、修改不會使 ID 發生變化)且可以重設長度(包括增加、刪除、修改元素)
  2. 列表中的元素可重復,元素之間的類型可以不同,元素的值可以修改
  3. 使用 [] 來定義列表
  4. 可以索引,可以切片
  5. 列表常用來保存多個獨立的同質(homogeneous)對象,例如北上廣深的人口數量
  6. 由于列表是動態數組,支持 resize 操作,因此當一個列表沒有空位放新的元素的時候,Python 會創建一個新的列表,把老的列表里面的元素以及新添加的元素放進去,同時把舊的列表銷毀。
  7. 當我們試圖創建一個有 n 個元素的列表時,Python 會創建一個可以放 n+k 個元素的列表,為未來添加元素預留了 k 個位置,這樣可以減少分配空間和內存復制的次數(很耗費計算資源),從而節省計算資源。
  8. 所以說保存同樣的元素個數的時候,元組占用的空間更小。

元組(tuple)

  1. 元組是靜態數組,不可變且內部數據一旦創建便無法改變(此外,數字、字符串也屬于不可變類型)

  2. 元組里的元素、元組的大小在創建完成以后不能改變,如果賦新的值則 ID 會發生變化

  3. 注意,這里的不可變指的是元組中每一個元素對象的引用(指針)不可變,但是如果某個元素對象本身是可變的對象,那么你是可以對這個可變對象進行修改的。例如,元祖里面有一個元素是列表,這個列表里面的內容是可以修改的。

  4. 元組里元素的類型可以不同

  5. 使用 () 來定義元組

  6. 可以切片、可以索引

  7. 元組常用來描述一個不會改變的事物的多個異質(heterogeneous,對比上面的“同質”,意思是不同位置的元素表達不同的意思)屬性,例如一個城市的經緯度。這也是為什么元組不可變而列表可變的原因,因為列表儲存同質的對象,例如北上廣深的人口數,我們可以再加上成都蘇州的人口數、或者刪掉深圳的人口數也沒有問題,但是元組里面一個城市的經緯度刪掉一個或者修改一個是沒有意義的。

  8. 關于可變與不可變的另一個例子:你外出散步的時候可以用元組 (x,y) 描述當前的經緯度,如果你想記錄自己的軌跡,那么可以用列表記錄每一秒的 [(x,y)]

  9. 由于字典的 key 必須是不可變類型,因此列表不能作為字典的 key,但是元組可以

  10. 如果實在想修改已經定義好的元組:

    ①可以通過切片來實現刪除元素的功能;

    ②可以通過 + 運算來實現拼接的功能,類似于列表的 resize 操作

  11. 創建元組的速度比創建列表的速度快 3-5 倍。一般不再用到的變量所占用的資源會被釋放還給操作系統,但是長度為 1-20 的元組即使不再使用了,也不會把它們占用的資源立刻還給操作系統,而是留作未來使用,這樣在以后創建同樣大小的元組的時候,就不用重新申請內存了。


元組練習-2
分割元組描述
輸入一個長度為偶數的元組 my_tuple,輸出兩個元組,一個是元組的前一半,一個是元組的后一半。
my_tuple = eval(input())
l = int(len(my_tuple))/2
print(my_tuple[:l])
print(my_tuple[l:])輸出:
(1, 2)
(3, 4)

元組練習-3
元素在元組內的出現次數輸入一個由整數組成的元組 my_tuple 和一個整數 x,輸出元組內 x 的個數。
my_tuple = eval(input())
x = int(input())
print(my_tuple.count(x))

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

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

相關文章

【Web安全靶場】sqli-labs-master 54-65 Challenges 與62關二分法和like模糊搜索

sqli-labs-master 54-65 Challenges 其他關卡和靶場見專欄… 文章目錄 sqli-labs-master 54-65 Challenges第五十四關-聯合注入第五十五關-聯合注入第五十六關-聯合注入第五十七關-聯合注入第五十八關-報錯注入第五十九關-報錯注入第六十關-報錯注入第六十一關-報錯注入第六十…

grid的刪除

/u01/11.2.0/grid 為 grid 用戶的安裝主目錄 1、刪除 crs 配置信息 root: cd /u01/11.2.0/grid/crs/install perl rootcrs.pl -deconfig -force 2、刪除 crs 配置信息&#xff0c;并卸載軟件 cd /u01/11.2.0/grid/deinstall ./deinstall grid user: ./deinstall -home /…

Mysql與StarRocks語法上的不同

&#x1f413; 序言 StarRocks 是新一代極速全場景 MPP (Massively Parallel Processing) 數據庫。StarRocks 的愿景是能夠讓用戶的數據分析變得更加簡單和敏捷。用戶無需經過復雜的預處理&#xff0c;可以用StarRocks 來支持多種數據分析場景的極速分析。 &#x1f413; 語法…

嵌入式驅動學習第一周——linux的休眠與喚醒

前言 本文介紹進程的休眠與喚醒。 嵌入式驅動學習專欄將詳細記錄博主學習驅動的詳細過程&#xff0c;未來預計四個月將高強度更新本專欄&#xff0c;喜歡的可以關注本博主并訂閱本專欄&#xff0c;一起討論一起學習。現在關注就是老粉啦&#xff01; 行文目錄 前言1. 阻塞和非阻…

第二節 數學知識補充

一、線性代數 向量的 L 2 L_2 L2?范數&#xff08;Euclidean范數/Frobenius范數&#xff09;&矩陣的元素形式范數 向量的 L 2 L_2 L2?范數&#xff1a; ∣ ∣ x ∣ ∣ 2 ( ∣ x 1 ∣ 2 ? ∣ x m ∣ 2 ) 1 2 ||x||_2(|x_1|^2\cdots|x_m|^2)^{\frac12} ∣∣x∣∣2?(∣…

Verilog參數、Verilog參數和屬性沖突、整數處理

Verilog參數 Verilog參數執行以下操作&#xff1a; ?允許您創建易于重用和擴展的參數化代碼。 ?使代碼更可讀、更緊湊、更易于維護。 ?將此類功能描述為&#xff1a; ○ 總線尺寸 ○ 建模設計單元中某些重復元素的數量 ?是常數。對于參數化模塊的每個實例化&#xf…

電腦桌面便簽哪個好,好用的電腦桌面便簽推薦

在如今信息爆炸的時代&#xff0c;人們的工作和生活節奏越來越快&#xff0c;記事和備忘變得尤為重要。而電腦桌面便簽作為一種方便快捷的記錄工具&#xff0c;備受廣大用戶青睞。那么&#xff0c;電腦桌面便簽哪個好&#xff0c;哪個更加出色呢&#xff1f; 作為一名人事專員…

CryoEM - 使用 cryoSPARC 基于單顆粒圖像從頭重構蛋白質三維結構

歡迎關注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136384544 基于冷凍電鏡單顆粒圖像重構蛋白質三維結構,利用冷凍電鏡技術測定生物大分子結構的方法。原理是從冷凍電鏡獲得大量同一種蛋白質分子的二維投影圖…

【數據結構】實現隊列

大家好&#xff0c;我是蘇貝&#xff0c;本篇博客帶大家了解隊列&#xff0c;如果你覺得我寫的還不錯的話&#xff0c;可以給我一個贊&#x1f44d;嗎&#xff0c;感謝?? 目錄 一. 隊列的概念及結構二. 隊列的實現隊列的結構體初始化銷毀隊尾插入隊頭刪除顯示第一個節點的值…

【Java程序員面試專欄 算法思維】六 高頻面試算法題:動態規劃

一輪的算法訓練完成后,對相關的題目有了一個初步理解了,接下來進行專題訓練,以下這些題目就是匯總的高頻題目,本篇主要聊聊回溯算法,主要就是排列組合問題,所以放到一篇Blog中集中練習 題目關鍵字解題思路時間空間零錢兌換動態規劃+雙重循環dp[i]表示兌換金額為i元的最少…

從0開始學習NEON(0)

1、前言 ? 最近在學習NEON指令集&#xff0c;主要學習"單指令流&#xff0c;多數據流"的編程方式&#xff0c;在這之前主要是針對cuda編程進行學習。最近的一部分工作轉移到了arm主板上&#xff0c;接觸到了 ncnn這個開源項目&#xff0c;不得不佩服nihui的強大。在…

C# 線性插值

線性插值是一種常用的插值算法&#xff0c;適用于許多實際場景。 傳感器數據處理&#xff1a;在傳感器數據處理中&#xff0c;可能會出現數據點不連續或不均勻的情況。使用線性插值可以根據已知的數據點來估算在兩個數據點之間的數值&#xff0c;從而填補數據中的缺失或不連續之…

iOS消息轉發流程

當向Objc對象發送消息時&#xff0c;如果找到對象對應的方法&#xff0c;就會進入消息轉發流程&#xff0c;給開發者提供一些最后的機會處理消息無法發送問題&#xff0c;以免出現程序崩潰。 1. 回調對象的resolveInstanceMethod方法&#xff0c;在這個方法中&#xff0c;允許開…

阿里云定價_ECS產品價格_云服務器收費標準 - 阿里云官方活動

2024年最新阿里云服務器租用費用優惠價格表&#xff0c;輕量2核2G3M帶寬輕量服務器一年61元&#xff0c;折合5元1個月&#xff0c;新老用戶同享99元一年服務器&#xff0c;2核4G5M服務器ECS優惠價199元一年&#xff0c;2核4G4M輕量服務器165元一年&#xff0c;2核4G服務器30元3…

logo設計軟件及網站匯總

文章目錄 一、智能設計logo的網站二、常用的logo設計軟件 一、智能設計logo的網站 Canva&#xff1a;Canva是一個在線設計平臺&#xff0c;提供了豐富的模板和設計工具&#xff0c;可以幫助用戶輕松設計出專業水平的logo。 DesignEvo&#xff1a;DesignEvo是一個專業的在線log…

基于 LLaMA 和 LangChain 實踐本地 AI 知識庫

有時候,我難免不由地感慨,真實的人類世界,本就是一個巨大的娛樂圈,即使是在英雄輩出的 IT 行業。數日前,Google 正式對外發布了 Gemini 1.5 Pro,一個建立在 Transformer 和 MoE 架構上的多模態模型。可惜,這個被 Google 寄予厚望的產品并未激起多少水花,因為就在同一天…

動作生成學習筆記

目錄 ReMoDiffus 檢索和擴散 文字生運動 action生運動 ReMoDiffus 檢索和擴散 ICCV 2023 | 重塑人體動作生成,融合擴散模型與檢索策略的新范式ReMoDiffuse來了,根據文本生成動作 有例子和模型&

CSS 顯示隱藏動畫(動畫失效問題)

就像這個動畫一樣的效果&#xff0c;div 先是隱藏的&#xff0c;點擊按鈕后顯示并且有動畫效果&#xff0c;隱藏的時候同樣。 <button class"btn" id"btn">點擊</button><div class"box" id"box"></div><s…

一些常用到的git命令

git stash -a //緩存所有文件 git checkout -b dev origin/dev //切換到dev分支上,接著跟遠程的origin地址上的dev分支關聯起來 //推送本地分支到遠程倉庫 git push origin localbranchname:remotebrancname git revert onefile //https://www.freecodecamp.org/news/git-re…

S2---FPGA-A7板級原理圖硬件實戰

視頻鏈接 FPGA-A7板級系統硬件實戰01_嗶哩嗶哩_bilibili FPGA-A7板級原理圖硬件實戰 基于XC7A100TFGG484的FPGA硬件設計流程圖 A7核心板&#xff0c;是基于XILINX公司的ARTIX-7系列100T的XC7A100T,2FGG484I這款芯片開發的高性能核心板&#xff0c;具有高速&#xff0c;高帶寬&a…