官术网_书友最值得收藏!

3.5 元組

元組(tuple)跟列表很相似,從外表看它們的差別就在于[]和()——列表是用方括號包裹,元組是用圓括號包裹。但就是這點不大的差別,讓元組這個Python的內置對象有了它的獨特之處。

img

這些都是創建元組的方法。從這些所創建的元組可以總結為:元組是用圓括號括起來的,其中的元素之間用逗號(英文狀態)隔開。元組中的元素是任意類型的Python對象。

值得注意的是,如果定義的元組中只有一個元素,需要這樣做:

img

元組和列表、字符串一樣,同屬于序列,因此它具有序列的所有特點。

每個元素都對應著自己的索引,并可以切片。

img

序列的基本操作,對于元組也是成立的。

img

元組的這些操作與列表完全一致。有不一樣的地方嗎?

img

這就顯示了元組和列表的最大差別。列表可以通過索引修改某個元素,但是元組不能如此操作,這說明元組是不可修改的,這個特點類似字符串。

用dir函數查看元組的屬性和方法,會看到:

img

所有在列表中可以修改列表的方法,在元組中都不存在了,因為元組不可修改。雖然如此,如果要修改元組,怎么辦?

用list函數和tuple函數能夠實現列表和元組之間的轉化。

img
img

所以,可以先把元組轉化為列表,然后進行修改。

讀者可能很懷疑元組這種對象的應用場景,既然它與列表有那么多相似處,為什么還要用它呢?

一般認為,元組有如下使用情景:

? 元組比列表操作速度快。如果定義了一個值,并且唯一要用它做的是不斷地遍歷它,那么請使用元組代替列表。

? 如果對不需要修改的數據進行“寫保護”,即該數據是常量,那么此時使用元組。如果必須改變這些值,則可以轉換為列表修改。

? 元組可以在字典(又一種對象類型,詳見3.6節)中被用作key,但是列表不可以。字典的key必須是不可變的。元組本身就是不可改變的,而列表是可變的。

所以,元組自有其用武之地,既然已經存在于Python中,必然有其合理性。

主站蜘蛛池模板: 南川市| 双江| 深州市| 洪雅县| 镇雄县| 扬州市| 吉安市| 东平县| 大渡口区| 墨竹工卡县| 福清市| 平阳县| 长春市| 寿阳县| 中超| 专栏| 平南县| 临高县| 新野县| 怀宁县| 乌拉特中旗| 手游| 平武县| 得荣县| 岳西县| 皮山县| 揭东县| 彰化市| 克山县| 武穴市| 正镶白旗| 安多县| 北辰区| 阿拉善盟| 商水县| 新丰县| 阿城市| 郑州市| 九龙县| 塔城市| 九龙城区|