摘要:返回元組中元素最大值。將列表轉換為元組。如果相對元組排序,通常先得將它轉換為列表并使其成為一個可變對象,才能獲得使用排序方法,或使用內置方法。
比List更安全的數據類型
大家好,今天為大家介紹一種更為安全的Python內置數據類型:tuple(元組),以及它的基礎用法
元組是什么元組(tuple)是另一種有序的數據類型,與list比較類似。主要不同的一點是tuple被創建后就不能對其進行修改。所以,tuple與list不同,沒有append(),pop(),insert()這些方法可以使用。獲取元素的方法和list是一樣的,可以通過索引來訪問(也是從0開始的),只不過不能賦值成為其他的元素。
因為 tuple不可變,所以代碼更安全。如果可以的話,我們盡量使用tuple代替list。
創建元組
# 定義一個空的tuple t = () print(t) Out:()
只有1個元素的元組在進行定義的時候,需要加一個逗號 , 來消除歧義,否則定義的就不是一個元組而是元素本身
t1 = (5) t2 = (5, ) print(t1) print(t2) Out: 5 (5,)
tup4 = (1, 2, 3, 4, 5 ); # 創建時直接賦值 tup5 = "a", "b", "c", "d"; # 創建時直接賦值 print(tup4) print(tup5) Out:(1, 2, 3, 4, 5) ("a", "b", "c", "d")
一旦創建完,比如tup4 和 tup5 這兩個tuple不能變了,它也沒有append(),insert()這樣的方法。其他獲取元素的方法和List是一樣的,我們可以正常地使用tup4[0],tup5[-1],但不能賦值成另外的元素
訪問元組
訪問元組和List基本一樣,我們可以用切片很容易的查看元組中的元素,這里不多說,看個小栗子:
tup4 = (1, 2, 3, 4, 5 ); tup5 = "a", "b", "c", "d"; print(tup4[0]) print(tup5[1:3]) print(tup5[::-1]) print(sorted(tup5,reverse=True)) # 使用sorted結果變成了List Out: 1 ("b", "c") ("d", "c", "b", "a") ["d", "c", "b", "a"]
理解元組的不可變
上面已經說過了,元組是不可變的,讓我們來看下面這個小栗子:
test=("a","b",[1,2,3]) print(test) test[2][0]=100 print(test) Out: ("a", "b", [1, 2, 3]) ("a", "b", [100, 2, 3])
不知道有沒有朋友會有疑問? 你不是說元組不能變嘛,這里怎么回事,test元組的第三個元素是List,這里我們修改了List的值結果不是變了嗎?
這里要給大家說明一下,tuple不可變指的是指向不變,也就是說test[2]永遠指向List[1,2,3],這里是因為List可變,所以我們才能修改為[100,2,3],但是改變前后test[2]的指向沒有發生任何變化,如果我們想要直接改變test[2]的值,就會發現如下錯誤
test[2]=[100,2,3] Out: TypeError: "tuple" object does not support item assignment
理解了“指向不變”后,如果我們需要創建一個內容也不變的tuple怎么做?那就必須保證tuple的每一個元素本身也不能變。
元組的連接
如前面所說,元組是不可改的,但是可以連接,我們可以使用 + 對元組進行連接:
t1 = (2,3,5) t2 = ("ricequant","python") t3 = t1 + t2 print(t3) Out:(2, 3, 5, "ricequant", "python")
元組的刪除
元組中的元素不能被刪除,但是我們可以使用 del 刪除整個元組,刪除后可以重新定義,非常簡單,不多說啦
person = ("xiaobai",18,"paris") print(person) del person print(person) Out: ("xiaobai", 18, "paris") NameError: name "person" is not defined
元組的解包
這里是比較有意思的地方,假設我們有一個元組t如下:
t = ("foo", "bar", "baz", "qux")
當我們創建 t 時,實際上就是一個打包,過程展示如下圖:
那如果是解包呢? 換過來就行了呀
t = ("foo", "bar", "baz", "qux") (s1, s2, s3, s4) = t print(s1,s2,s3,s4) Out:foo bar baz qux
當我們執行(s1, s2, s3, s4) = t的時候,實際發生的情況如下:
這里注意一點,如果我們嘗試解包一個元祖是傳遞的變量和元組實際元素數量不相符時會產生錯誤:
(s1, s2, s3) = t ValueError: too many values to unpack (expected 3) (s1, s2, s3, s4, s5) = t ValueError: not enough values to unpack (expected 5, got 4)
元組的互換swap
其實Python里面還有一種非常簡單的創建元組的方法,那就是逗號,我們如果用逗號分隔一些元素,會自動生成一個元組:
a = "foo" b = "bar" x= a, b print(x) Out:("foo", "bar")
如果做一個簡單的互換很容易,只要這樣就可以了:
x= b,a print(x) Out:("bar", "foo")
元組的常用方法匯總
tup.index(x, [start, [stop]])) 返回元組中start到stop索引中第一個值為 x的元素在整個列表中的索引。如果沒有匹配的元素就會返回一個錯誤。
tup.count(x) 返回 x 在元組中出現的次數。
cmp(tuple1, tuple2) 比較元組中兩個元素。
len(tuple) 計算元組元素個數。
max(tuple) 返回元組中元素最大值。
min(tuple) 返回元組中元素最小值。
tuple(seq) 將列表轉換為元組。
元組不提供字符串、列表和字典中的方法。如果相對元組排序,通常先得將它轉換為列表并使其成為一個可變對象,才能獲得使用排序方法,或使用sorted內置方法。
總結今天為大家講解了我知道的有關tuple的一切,也為大家展示了一些常規操作,希望能夠幫助到大家,馬上就要到初五了,迎財神,吃餃子!!! 希望大家在2019大吉大利,大發橫財!!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43150.html
摘要:它需要一個函數默認工廠作為其參數。默認情況下設置為,即如果鍵不存在則為,并返回并顯示默認值。因此,它是一個無序集合,其中元素及其各自的計數存儲為字典。這相當于其他語言的或。使用,我們不必使用整數索引來訪問元組的成員。 神奇的collections 大家好,今天想和大家分享一個Python里面非常棒的模快:Collections 該模塊實現了專門的容器數據類型,為Python的通用內置容...
摘要:另外,這些中的每一個都是純函數,有返回值。例如,如果要計算整數列表的累積乘,或者求和等等基礎語法參數是連續作用于每一個元素的方法,新的參數為上一次執行的結果,為被過濾的可迭代序列返回值最終的返回結果在中,是一個內置函數。 簡潔的內置函數 大家好,我又回來了,今天我想和大家分享的是Python非常重要的幾個內置函數:map,filter,reduce, zip。它們都是處理序列的便捷函數...
摘要:將每一行作為返回,其中是每行中的列名。對于每一行,都會生成一個對象,其中包含和列中的值。它返回一個迭代器,是迭代結果都為的情況。深度解析至此全劇終。 簡單實戰 大家好,我又來了,在經過之前兩篇文章的介紹后相信大家對itertools的一些常見的好用的方法有了一個大致的了解,我自己在學完之后仿照別人的例子進行了真實場景下的模擬練習,今天和大家一起分享,有很多部分還可以優化,希望有更好主意...
摘要:嘗射于家圃,有賣油翁釋擔而立,睨之,久而不去。康肅問曰汝亦知射乎吾射不亦精乎翁曰無他,但手熟爾。康肅忿然曰爾安敢輕吾射翁曰以我酌油知之。 開啟變身模式 大家好, 從這一期開始,我們會從小白變身為中等小白,在基礎起步階段有太多的東西我沒有講到,但是俗話說的好,無他,但手熟爾,只要多多練習,時間會是最好的證明,相信我們終有一天會成為高手,因此從這一系列開始,讓我們一起更上一層樓,還是和往常...
摘要:本章內容主要是對列表的進一步操作,以及初識元組數據結構。列表非常適合用于存儲在程序運行期間可能變化的數據集,列表可以被修改。代碼結果相比于列表,元組是更簡單的數據結構。 《Python編程:從入門到實踐》筆記。本章內容主要是對列表的進一步操作,以及初識元組數據結構。 1. 遍歷列表 本章主要是for循環: # 代碼: magicians = [alice, david, carolin...
閱讀 1918·2021-11-22 09:34
閱讀 1158·2021-10-09 09:44
閱讀 3046·2021-09-29 09:35
閱讀 3626·2021-09-14 18:01
閱讀 1494·2021-08-16 10:49
閱讀 1096·2019-08-29 14:11
閱讀 859·2019-08-29 12:47
閱讀 3081·2019-08-26 13:47