日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

每天一小时python官方文档学习(五)————数据结构之元组、集合与字典

發布時間:2023/12/4 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 每天一小时python官方文档学习(五)————数据结构之元组、集合与字典 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天介紹完了最常用的列表,之后就是次常用的元組、集合與字典了。

5.3. 元組和序列

元組和之前講過的列表有很多共同特性,例如索引切片操作。實際上,他們是 序列 數據類型(list, tuple, range)中的兩種。

一個元組由幾個被逗號隔開的值組成,例如:

>>> t = 12345, 54321, 'hello!' # 元組打包 >>> t[0] 12345 >>> t (12345, 54321, 'hello!') >>> # 元組可以嵌套 ... u = t, (1, 2, 3, 4, 5) >>> u ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5)) >>> # 元組本身是不可變的 ... t[0] = 88888 Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> # 但是元組可以包含可變對象,如下面的列表 ... v = ([1, 2, 3], [3, 2, 1]) >>> v ([1, 2, 3], [3, 2, 1])

如你所見,元組在輸出時總是被圓括號()包圍的,以便正確表示嵌套元組。輸入時圓括號可有可無,不過經常會是必須的(如果這個元組是一個更大的表達式的一部分)。

雖然元組可能看起來與列表很像,但它們通常是在不同的場景被使用,并且有著不同的用途。元組是 immutable (不可變的),其序列通常包含不同種類的元素,并且通過解包或者索引來訪問。列表是 mutable (可變的),并且列表中的元素一般是同種類型的,并且通過迭代訪問。給元組中的一個單獨的元素賦值是不允許的,當然你可以創建包含可變對象的元組,例如列表。

一個特殊的問題是構造包含0個或1個元素的元組:為了適應這種情況,語法有一些額外的改變。空元組可以直接被一對空圓括號創建,含有一個元素的元組可以通過在這個元素后添加一個逗號來構建(圓括號里只有一個值的話不夠明確)。不好看,但是有效。例如:

>>> empty = () >>> singleton = 'hello', # 一個元素后面加了一個逗號,表示是包含一個元素的元組 >>> len(empty) 0 >>> len(singleton) 1 >>> singleton ('hello',)

最后講解一對概念,元組打包序列解包。如最開始代碼中的 t = 12345, 54321, 'hello!'就是元組打包的例子,我們通過x, y, z = t即序列解包,就能得到x = 12345,y = 54321,z = 'hello!'的結果。

實際上元組打包和序列解包是互為逆操作的,注意序列解包要求等號左側的變量數與右側序列里所含的元素數相同。而多重賦值,其實也不過是元組打包和序列解包的組合而已。

5.4. 集合

我們都知道,集合是由不重復元素組成的無序的集,所以python中的集合也是如此。它的基本用法包括成員檢測(查找)和消除重復元素(去重)。集合對象也支持像 并集,交集,差集等數學運算。花括號{}或 set() 函數可以用來創建集合

注意:要創建一個空集合你只能用 set() 而不能用 {},因為后者是創建一個空字典,這種數據結構我們會在下面進行討論。

以下是一些簡單的示例:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} >>> print(basket) # 重復項被自動刪除了 {'orange', 'banana', 'pear', 'apple'} >>> 'orange' in basket # 檢測元素是否在集合中 True >>> 'crabgrass' in basket False>>> # 兩個字母集合之間進行運算 ... >>> a = set('abracadabra') >>> b = set('alacazam') >>> a # 一段字母去重后的即為集合 {'a', 'r', 'b', 'c', 'd'} >>> a - b # a有但是b沒有的字母(差集) {'r', 'd', 'b'} >>> a | b # a或者b有的字母(并集) {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} >>> a & b # a和b都有的字母(交集) {'a', 'c'} >>> a ^ b # a或b只有一個有的字母(異或) {'r', 'd', 'b', 'm', 'z', 'l'}

類似于 列表推導式,集合也支持推導式形式(集合推導式):

>>> a = {x for x in 'abracadabra' if x not in 'abc'} >>> a {'r', 'd'}

5.5. 字典

另一個非常有用的 Python 內置數據類型是字典。字典在其他語言里可能會被叫做聯合內存 或聯合數組。與以連續整數為索引的序列不同,字典是以關鍵字為索引的,關鍵字可以是任意不可變類型,通常是字符串或數字。如果一個元組只包含字符串、數字或元組,那么這個元組也可以用作關鍵字。但如果元組直接或間接地包含了可變對象,那么它就不能用作關鍵字列表不能用作關鍵字,因為列表可以通過索引、切片或 append() 和 extend() 之類的方法來改變(可變類型)。

理解字典的最好方式,就是將它看做是一個 鍵: 值 對的集合,鍵必須是唯一的(在一個字典中)。一對花括號(大括號){}可以創建一個空字典 。另一種初始化字典的方式是在一對花括號里放置一些以逗號分隔的鍵值對,而這也是字典輸出的方式。

字典主要的操作是使用關鍵字存儲和解析值。也可以用 del 來刪除一個鍵值對。如果你使用了一個已經存在的關鍵字來存儲值,那么之前與這個關鍵字關聯的值就會被遺忘。用一個不存在的鍵來取值則會報錯

對一個字典執行 list() 將返回包含該字典中所有鍵的列表,按插入次序排列 (如需其他排序,則要使用 sorted())。要檢查字典中是否存在一個特定鍵,可使用 in 關鍵字。

以下是使用字典的一些簡單示例:

>>> tel = {'jack': 4098, 'sape': 4139} >>> tel['guido'] = 4127 >>> tel {'jack': 4098, 'sape': 4139, 'guido': 4127} >>> tel['jack'] 4098 >>> del tel['sape'] >>> tel['irv'] = 4127 >>> tel {'jack': 4098, 'guido': 4127, 'irv': 4127} >>> list(tel) ['jack', 'guido', 'irv'] >>> sorted(tel) ['guido', 'irv', 'jack'] >>> 'guido' in tel True >>> 'jack' not in tel False

除了用花括號,也可以用dict() 構造函數直接從鍵值對序列里創建字典:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) {'sape': 4139, 'guido': 4127, 'jack': 4098}

當關鍵字是簡單字符串時,有時直接通過關鍵字參數來指定鍵值對更方便:

>>> dict(sape=4139, guido=4127, jack=4098) {'sape': 4139, 'guido': 4127, 'jack': 4098}

此外,字典推導式可以從任意的鍵值表達式中創建字典:

>>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36}

總結

以上是生活随笔為你收集整理的每天一小时python官方文档学习(五)————数据结构之元组、集合与字典的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。