Python學習5 元組基礎知識和常用函數

元組概念

元組:a=(1,23)
列表:a= [1,23]
在這里插入圖片描述

創建和訪問元組

Python 的元組與列表類似,不同之處在于tuple被創建后就不能對其進行修改,類似字符串。
元組與列表類似,也用整數來對它進行索引 (indexing) 和切片 (slicing)。
元組下標:0–(n-1)
創建元組可以用小括號 (),也可以什么都不用,為了可讀性,建議還是用 ()。

t1 = (1, 10.31, 'python')
t2 = 1, 10.31, 'python'
print(t1, type(t1))
# (1, 10.31, 'python') <class 'tuple'>print(t2, type(t2))
# (1, 10.31, 'python') <class 'tuple'>tuple1 = (1, 2, 3, 4, 5, 6, 7, 8)
print(tuple1[1])  # 2
print(tuple1[5:])  # (6, 7, 8)
print(tuple1[:5])  # (1, 2, 3, 4, 5)
tuple2 = tuple1[:]
print(tuple2)  # (1, 2, 3, 4, 5, 6, 7, 8)

注意:
元組中只包含一個元素時,需要在元素后面添加逗號,否則括號會被當作運算符使用

x = (1,)
print(type(x))  # <class 'tuple'>
print(8 * (8))  # 64
print(8 * (8,))  # (8, 8, 8, 8, 8, 8, 8, 8)

創建二維元組

x = (1, 10.31, 'python'), ('data', 11)
print(x)
# ((1, 10.31, 'python'), ('data', 11))print(x[0])
# (1, 10.31, 'python')
print(x[0][0], x[0][1], x[0][2])
# 1 10.31 pythonprint(x[0][0:2])
# (1, 10.31)

更新元組

注意:可以直接使用+,連接兩個元組
元組:

week = ('Monday', 'Tuesday', 'Thursday', 'Friday')
week = week[:2] + ('Wednesday',) + week[2:]
print(week)  # ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')

更新元組:
元組有不可更改 (immutable) 的性質,因此不能直接給元組的元素賦值,但是只要元組中的元素可更改 (mutable),那么我們可以直接更改其元素,注意這跟賦值其元素不同。

t1 = (1, 2, 3, [4, 5, 6])
print(t1)  # (1, 2, 3, [4, 5, 6])t1[3][0] = 9
print(t1)  # (1, 2, 3, [9, 5, 6])

元組相關的操作符

等號操作符:==
連接操作符 +
重復操作符 *
成員關系操作符 in、not in
「等號 ==」,只有成員、成員位置都相同時才返回True。

元組拼接有兩種方式,用「加號 +」和「乘號 *」,前者首尾拼接,后者復制拼接。

t1 = (123, 456)
t2 = (456, 123)
t3 = (123, 456)print(t1 == t2)  # False
print(t1 == t3)  # Truet4 = t1 + t2
print(t4)  # (123, 456, 456, 123)t5 = t3 * 3
print(t5)  # (123, 456, 123, 456, 123, 456)t3 *= 3
print(t3)  # (123, 456, 123, 456, 123, 456)print(123 in t3)  # True
print(456 not in t3)  # False

count函數函數和index()函數

元組大小和內容都不可更改,因此只有 count 和 index 兩種方法。

count() 是記錄在元組中該元素出現幾次
index() 是找到該元素在元組的索引

t = (1, 10.31, 'python')
print(t.count('python'))  # 1
print(t.index(10.31))  # 1

解壓一維元組

元組有幾個元素,左邊括號就定義幾個變量

t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)

解壓二維元組

元組有幾個元素,左邊括號就定義幾個變量

t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
# 1 10.31 OK python

如果你只想要元組其中幾個元素,用通配符「*」,英文叫 wildcard,在計算機語言中代表一個或多個元素。
下例就是把多個元素丟給了 rest 變量。

t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c)  # 1 2 5
print(rest)  # [3, 4]

如果你根本不在乎 rest 變量,那么就用通配符「*」加上下劃線「_」。

t = 1, 2, 3, 4, 5
a, b, *_ = t
print(a, b)  # 1 2

元組和列表的相互轉換

在這里插入圖片描述
tuple()列表轉元組
list()元組轉列表

#列表與元組轉換
a=['d','2345','dfwvtgrh']
b=(1,'u',8.0)
print(a,b,sep=' ')
print(tuple(a),list(b),sep=' ')
#輸出
# ['d', '2345', 'dfwvtgrh'] (1, 'u', 8.0)
# ('d', '2345', 'dfwvtgrh') [1, 'u', 8.0]

join()方法:
用于將序列中的元素以指定的字符連接生成一個新的字符串。
語法join()方法語法:
str.join(sequence)

參數:
sequence-- 要連接的元素序列。
返回值:
返回通過指定字符連接序列中元素后生成的新字符串。

實例以下實例展示了join()的使用方法:

#列表join
str='*'
tuple1=('45','gt','45ghgju')
print(str.join(tuple1))
#45*gt*45ghgju

綜合練習–輸出選課學生信息

#5
#用三個元組表示三門學科的選課學生姓名(一個學生可以同時選多門)first=('a','b','c','d','e','f','g')
second=('a','c','e','g','h','i','j')
third=('a','e','i')#(1)求選課學生總共有多少人;
tuple1=()
tuple1=first+second+third
list1=list(tuple1)
list2=list(set(list1))
print("選課學生:"+str(len(list2)))# (2)求只選了第一個學課的人的數量和對應的學生姓名;
print("只選了第一個學課的人的數量:"+str(len(first)))
for i in first:print(i,sep='',end='\t')# (3)求只選了一門學科的學生的數量和對應學生姓名;
check = []
tuple1 = ()
tuple1 = first + second + third
for i in tuple1:if (tuple1.count(i) == 1) and ((i in check )== False):check.append(i)
print("一門學科的學生的數量:"+str(len(check))+"\n"+"對應的學生姓名:"+str(check))
# (4)求只選了兩門學科的學生的數量和對應學生姓名;
check = []
tuple1 = ()
tuple1 = first + second + third
for i in tuple1:if (tuple1.count(i) == 2) and ((i in check )== False):check.append(i)
print("兩門學科的學生的數量:"+str(len(check))+"\n"+"對應的學生姓名:"+str(check))# (5)求選了三門學科的學生的數量和對應學生姓名;
check = []
tuple1 = ()
tuple1 = first + second + third
for i in tuple1:if (tuple1.count(i) == 3) and ((i in check )== False):check.append(i)
print("三門學科的學生的數量:"+str(len(check))+"\n"+"對應的學生姓名:"+str(check))

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

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

相關文章

STL源碼剖析 仿函數

仿函數 也叫函數對象1&#xff0c;具有函數性質的對象&#xff1b;2&#xff0c;這種東西在調用者可以像函數一樣地被調用(調用)&#xff0c;在被調用者則以對象所定義的function call operator扮 演函數的實質角色。要將某種 “操作”當做算法的參數&#xff0c;唯一辦法就是先…

Python學習6 字典基礎知識和常用函數

字典概念 字典是 Python 提供的一種常用的數據結構&#xff0c;它用于存放具有映射關系的數據。為了保存具有映射關系的數據&#xff0c;Python 提供了字典&#xff0c;字典相當于保存了兩組數據&#xff0c;其中一組數據是關鍵數據&#xff0c;被稱為 key&#xff1b;另一組數…

EndNote概述

概述 EndNote 是SCI&#xff08;Thomson Scientific 公司&#xff09;的官方軟件&#xff0c;支持國際期刊的參考文獻格式有3776 種&#xff0c;寫作模板幾百種&#xff0c;涵蓋各個領域的雜志。簡單來說EndNote的功能就是替你管理文獻&#xff0c;一鍵插入固定格式的參考文獻…

Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP協議

創建項目 新建項目 Java Enterprise JDK1.8 Web Application Tomcat JAVA 默認 過程需要聯網 Maven的配置 IDEA內置Maven 修改本地倉庫位置&#xff0c;因為以后會越來越大 替換配置文件&#xff1a; 阿里云鏡像下載 Servlet基礎 1.動態Web資源開發 2.Servlet是使用J…

STL源碼剖析 配接器

配接器(adapters)在 STL組件的靈活組合運用功能上&#xff0c;扮演著軸承、轉換器的角色。Adapter這個概念&#xff0c;事實上是一種設計模式(design pattern)。 Design Patterns)) 一書提到23個最普及的設計模式&#xff0c;其中對odopter樣式的定義如下&#xff1a;將 一個cl…

中科大 計算機網絡3 網絡邊緣Edge

網絡結構 邊緣系統 網絡核心 接入網 方塊&#xff1a;邊緣系統(主機) 圓的&#xff1a;網絡核心&#xff0c;數據交換作用 連接邊緣系統和網絡核心的叫做接入網&#xff08;access&#xff09;&#xff0c;把邊緣的主機接入到網絡核心&#xff08;所以是分布式的&#xff09; …

STL源碼剖析 入門開始 STL概論與版本簡介

源代碼之中時而會出現一些全局函數調用操作&#xff0c;尤其是定義于<stl_construct.h> 之中用于對象構造與析構的基本函數&#xff0c;以及定義于<stl_uninitialized.h>之 中 用 于 內 存 管 理 的 基 本 函 數 &#xff0c; 以及定義于<stl_algobase.h>之中…

中科大 計算機網絡4 網絡核心Core 分組交換 電路交換

網絡核心 電路交換&#xff08;線路交換&#xff09;&#xff1a;打電話之前&#xff0c;先建立一條鏈路&#xff08;物理&#xff09; 分組交換&#xff1a;存儲轉發的方式 電路交換&#xff08;線路交換&#xff09; 通過信令&#xff08;控制信息&#xff0c;如&#xf…

STL 源碼剖析 空間配置器

以STL的運用角度而言&#xff0c;空間配置器是最不需要介紹的東西&#xff0c;它總是隱藏在一切組件&#xff08;更具體地說是指容器&#xff0c;container&#xff09; 的背后但是STL的操作對象都存放在容器的內部&#xff0c;容器離不開內存空間的分配為什么不說allocator是內…

中科大 計算機網絡7 分組延遲 分組丟失 吞吐量

分組丟失和延遲的原因 隊列太長沒有意義&#xff0c;用戶需求 排隊&#xff1a;輸出能力<到來的分組&#xff0c;需要等待 四種分組延遲 節點處理延遲&#xff1a;確定的 排隊延遲&#xff1a;隨機&#xff0c;取決于網絡情況 一個比特的傳輸時間&#xff1a; R1Mbps …

STL源碼剖析 迭代器iterator的概念 和 traits編程技法

iterator模式定義如下&#xff1a;提供一種方法&#xff0c;使之能夠依序巡訪某個 聚合物(容器)所含的各個元素&#xff0c;而又無需暴露該聚合物的內部表述方式.STL的中心思想在于&#xff1a;將數據容器(containers)和算法(algorithms)分開&#xff0c;彼此獨立設計&#xff…

中科大 計算機網絡11 應用層原理

應用層大綱 傳輸層向應用層提供的服務&#xff0c;形式是Socket API&#xff08;原語&#xff09; 一些網絡應用的例子 互聯網層次中&#xff0c;應用層協議最多 流媒體應用&#xff1a;直播 網絡核心最高的層次就是網絡層 應用進程通信方式 C/S&#xff1a; 客戶端&…

STL源碼剖析 序列式容器 vector 和 ilist

Vector list 單向鏈表 ilistlist的刪除操作&#xff0c;也只有指向被刪除元素的迭代器會失效&#xff0c;其他迭代器不會受到影響

中科大 計算機網絡5 接入網和物理媒體

接入網 接入網&#xff1a;把邊緣&#xff08;主機&#xff09;接入核心&#xff08;路由器&#xff0c;交換機&#xff09; 骨干網【連接主機和主機】和接入網中都有物理媒體 接入方式&#xff1a;有線和無線 帶寬共享/獨享 接入網&#xff1a;住宅接入modem modem調制解調…

STL源碼剖析 序列式容器 deque雙端隊列

相較于vector的內存拷貝&#xff0c;deque在內存不足時只需要進行內存的拼接操作即可&#xff0c;不需要重新配置、復制、釋放等操作&#xff0c;代價就是迭代器的架構不是一個普通的指針&#xff0c;比較復雜d e q u e 的迭代器 deque是分段連續空間。維持其“整體連續”假象…

中科大 計算機網絡6 Internet結構和ISP

互聯網的結構 端系統通過接入ISPs接入互聯網 n個ISP互相連接&#xff1a; IXP,Internet exchage point:互聯網接入點&#xff0c;互聯網交互點 ISP&#xff1a;互聯網服務提供商&#xff0c;提供接入&#xff0c;提供網絡【中國移動&#xff0c;中國電信】 ICP&#xff1a…

STL源碼剖析 Stack棧 queue隊列

隨機迭代器用于隨機數據訪問&#xff0c;所以棧stack不具備此功能

中科大 計算機網絡8 協議層次和服務模型

協議層次 協議層次&#xff1a;現實生活中的例子 分層 分層處理和實現復雜系統 圖中&#xff0c;左邊是模塊&#xff0c;右邊是分層 計算機的設計是分層&#xff0c;每一層實現一個或一組功能&#xff0c;下層向上層提供服務&#xff1b;但效率比較低 對等層實體通過協議來交換…

STL源碼剖析 heap堆結構

heap一般特指max-heap&#xff0c;即最大的元素位于heap和array的首部 heap不提供遍歷功能&#xff0c;也不提供迭代功能

中科大 計算機網絡9 互聯網歷史

總綱 計算機網絡 早期1960以前 1961-1972 NCP協議&#xff1a;相當于現在的TCP和IP協議 每個節點即是數據的源也是數據的目標