最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python數(shù)據(jù)結構詳解(三)- 列表與元組

2023-03-16 19:32 作者:Mr_Tree樹先生  | 我要投稿

學習一門語言,了解其數(shù)據(jù)結構是基礎。由于Python是動態(tài)編程語言,所以在定義變量時并不需要事先指定變量的數(shù)據(jù)類型,變量的聲明和初始化是同時進行的。

Python有如下五大數(shù)據(jù)結構類型:

1、Number類型

2、字符串類型

3、列表,元組

4、字典

5、集合

下面我們逐一來了解一下~

本篇主要介紹列表與元組,是數(shù)據(jù)結構類型介紹的第三篇。

前兩篇關于Number類型和字符串類型的介紹,可以搜索訂閱號《Python寶典》。

三、列表與元組

之所以將列表與元組放到一起,是因為這兩個數(shù)據(jù)類型很相似,可以將元組理解為只讀的列表結構。

1.1 列表

1.1.1 列表的表達方式

列表的元素和數(shù)量可以是任意的,可能只有幾個元素,也可能有成千上萬個元素,每個元素的類型可以是相同的,也可以是不同的,列表中區(qū)分元素順序,也允許包含重復元素。

下面來看下如何定義一個列表。


1.1.2 列表的基本操作

  • 索引和切片

列表的操作基本都是索引來實現(xiàn)的。

索引編號默認是從0開始的,并且在python中,還支持反向索引,用負數(shù)表示:


切片操作可以從列表中根據(jù)指定的開始索引與結束索引來獲取一個新的子列表,切片有如下幾個特點:

(1)切片截取的是左開右閉區(qū)間,s[1:3]取的是s[1]與s[2];

(2)結束索引若為0,會獲取一個空列表;

(3)結束索引在列表中的位置若小于等于開始索引在列表中的位置,也會返回一個空列表;

(4)切片默認步長是1,也可以手動指定,但步長不能為0,否則會拋出異常。


  • 列表的加法與乘法

加法操作使用加號(+)完成,表示把加號兩端的列表變量連接形成一個新列表;

乘法操作使用星號(*)完成,表示對當前列表對象進行復制并連接,并形成一個新列表。


會拋出異常

可以使用 in 運算符檢查某個元素是否在列表中,返回True / False


  • 列表元素的修改與刪除

列表元素的修改是通過索引來實現(xiàn)的。


列表的刪除很簡單,使用 del 語句即可。


1.1.3 多維列表

所謂多維列表,就是列表的元素還是列表,列表的元素還是列表……

呃……還是以二維舉例吧~


上面是最基本的創(chuàng)建二維列表的方式,但有時候二維列表是根據(jù)已有的條件來創(chuàng)建。


這邊用到了列表解析生成二維列表的方式,現(xiàn)在看不懂沒關系,看完下面章節(jié)再回頭來看這里就明白了。

1.1.4 列表解析

列表解析(或稱列表推導)是根據(jù)已有列表,高效創(chuàng)建新列表的方式。

列表解析是Python迭代機制的一種應用,常用于創(chuàng)建新的列表。

解析語法:[expr for_var in iterable]

這個語句的核心是 for 循環(huán), 它迭代 iterable 對象的所有條目,前邊的 expr 是生成列表元素的表達式。

舉個栗子~


1.2 元組

1.2.1 元組的表達方式

元組與列表一樣,也是一種列表,唯一不同的是元組不能修改,將元組理解為只讀的列表更容易幫助理解。

下面來看下如何定義一個元組。


可以看到,元組是用圓括號()括起來的,并且在定義的時候可以不需要加圓括號。

也可以將元組分配給多個變量。


利用這個特性,可以很容易的實現(xiàn)變量交換,而無需中間變量。


上面栗子中,變量的數(shù)量與元組中的元素數(shù)量是相同的,否則會拋出異常。

問題來了,如果元組中元素很多,比如有100個,難道需要定義100個變量么?

其實不用這么麻煩,只需要將部分元素賦給變量,其余元素轉化為子列表即可,上栗子~


在上面代碼中,右側的元組有9個元素,而左側只有3個變量,如果按以前的邏輯,執(zhí)行這行代碼肯定是要拋出異常的,但由于z變量前面有一個 *,這就是通配符,如果放在一個變量前面,表示列表,也就是說,變量z本身就是一個列表。

Python解析器首先會按列表中元素的順序和匹配對應的單個變量,剩下的值都給列表變量,也就是z。所以執(zhí)行這行代碼后,x和y的值分別是1和2,而z的值是[3, 4, 5, 6, 7, 8, 9]。

需要注意的是,左側變量中只能由一個帶 * 的變量,否則python解析器無法確定列表的范圍。

最后,再來看看如何定義只含一個元素的元組。


從上面栗子可以看出,定義一個元素的元組需要在末尾加上逗號,否則就只是一個普通的值,并非元組。

1.2.2 元組的基本操作

  • 訪問:元組和列表一樣,也是通過索引來訪問具體的元素;

  • 修改:元組是只讀的,不支持元素的修改;

  • 刪除:元素值不允許刪除的,但可使用 del 語句刪除整個元組。

1.3 相關函數(shù)與方法

1.3.1 列表與元組常用的函數(shù)

1.3.2 列表與元組常用的方法

1.4 列表與元組的差異

總結一下列表與元組的差異點:

  • 可變性:列表是可變的(Mutable),也就是說,它們的元素可以通過索引進行修改、刪除或添加,而元組是不可變的(Immutable),一旦創(chuàng)建就不能被修改。

  • 語法:列表用方括號([])來表示,元素之間用逗號(,)分隔,而元組用圓括號(())來表示,元素之間也用逗號(,)分隔。如果元組只有一個元素,則需要在元素后面加上一個逗號。

  • 使用場景:一般來說,當我們需要在程序中存儲一些可以被修改的數(shù)據(jù)時,應該使用列表。而當我們需要在程序中存儲一些不可修改的數(shù)據(jù)時,應該使用元組。

  • 性能:由于元組是不可變的,因此在一些情況下它們比列表更快,尤其是當元組作為字典的鍵時。

  • 內(nèi)存:一般來說,創(chuàng)建元組類型tuple的變量比列表類型list要快,而且占用更小的存儲空間。

  • 線程安全:元組類型變量的元素不可更改性,可保證多線程讀寫時的安全問題。

下篇開始介紹字典,如果覺得小編寫的不錯的話,麻煩給個關注,點贊、轉發(fā)~


Python數(shù)據(jù)結構詳解(三)- 列表與元組的評論 (共 條)

分享到微博請遵守國家法律
广平县| 名山县| 胶州市| 宁南县| 集贤县| 金平| 亚东县| 龙南县| 昌图县| 哈密市| 桃源县| 博乐市| 黎川县| 大渡口区| 叙永县| 卫辉市| 吉隆县| 三都| 大埔区| 房山区| 长寿区| 虞城县| 贵德县| 巴中市| 修水县| 五大连池市| 阳谷县| 遂平县| 辉南县| 朔州市| 昌宁县| 遵义市| 馆陶县| 都匀市| 琼结县| 西贡区| 拉萨市| 巴楚县| 齐河县| 碌曲县| 图木舒克市|