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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...

發(fā)布時(shí)間:2025/3/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本章將會介紹 Python 內(nèi)置的四種常用數(shù)據(jù)結(jié)構(gòu):列表(list)、元組(tuple)、字典(dict)以及集合(set)。

這四種數(shù)據(jù)結(jié)構(gòu)一但都可用于保存多個(gè)數(shù)據(jù)項(xiàng),這對于編程而言是非常重要的,因?yàn)槌绦虿粌H需要使用單個(gè)變量來保存數(shù)據(jù),還需要使用多種數(shù)據(jù)結(jié)構(gòu)來保存大量數(shù)據(jù),而列表、元組、字典和集合就可滿足保存大量數(shù)據(jù)的需求。

列表(list)和元組(tuple)比較相似,它們都按順序保存元素,每個(gè)元素都有自己的索引,因此列表和元組都可通過索引訪問元素。二者的區(qū)別在于元組是不可修改的,但列表是可修改的。

字典(dict)和集合(set)類似,它們存儲的數(shù)據(jù)都是無序的,其中字典是用 key-value 的形式保存數(shù)據(jù)。

所謂序列,指的是一塊可存放多個(gè)值的連續(xù)內(nèi)存空間,這些值按一定順序排列,可通過每個(gè)值所在位置的編號(稱為索引)訪問它們。

為了更形象的認(rèn)識序列,可以將它看做是一家旅店,那么店中的每個(gè)房間就如同序列存儲數(shù)據(jù)的一個(gè)個(gè)內(nèi)存空間,每個(gè)房間所特有的房間號就相當(dāng)于索引值。也就是說,通過房間號(索引)我們可以找到這家旅店(序列)中的每個(gè)房間(內(nèi)存空間)。

在 Python 中,序列類型包括字符串、列表、元組、集合和字典,這些序列支持以下幾種通用的操作,但比較特殊的是,集合和字典不支持索引、切片、相加和相乘操作。

字符串也是一種常見的序列,它也可以直接通過索引訪問字符串內(nèi)的字符。

序列索引

序列中,每個(gè)元素都有屬于自己的編號(索引)。從起始元素開始,索引值從 0 開始遞增,如圖 1 所示。

圖 1 序列索引值示意圖

除此之外,Python 還支持索引值是負(fù)數(shù),此類索引是從右向左計(jì)數(shù),換句話說,從最后一個(gè)元素開始計(jì)數(shù),從索引值 -1 開始,如圖 2 所示。

圖 2 負(fù)值索引示意圖

注意,在使用負(fù)值作為列序中各元素的索引值時(shí),是從 -1 開始,而不是從 0 開始。

無論是采用正索引值,還是負(fù)索引值,都可以訪問序列中的任何元素。以字符串為例,訪問“C語言中文網(wǎng)”的首元素和尾元素,可以使用如下的代碼:

str="C語言中文網(wǎng)"

print(str[0],"==",str[-6])

print(str[5],"==",str[-1])

輸出結(jié)果為:

C == C

網(wǎng) == 網(wǎng)

序列切片

切片操作是訪問序列中元素的另一種方法,它可以訪問一定范圍內(nèi)的元素,通過切片操作,可以生成一個(gè)新的序列。

序列實(shí)現(xiàn)切片操作的語法格式如下:

sname[start : end : step]

其中,各個(gè)參數(shù)的含義分別是:

sname:表示序列的名稱;

start:表示切片的開始索引位置(包括該位置),此參數(shù)也可以不指定,會默認(rèn)為 0,也就是從序列的開頭進(jìn)行切片;

end:表示切片的結(jié)束索引位置(不包括該位置),如果不指定,則默認(rèn)為序列的長度;

step:表示在切片過程中,隔幾個(gè)存儲位置(包含當(dāng)前位置)取一次元素,也就是說,如果 step 的值大于 1,則在進(jìn)行切片去序列元素時(shí),會“跳躍式”的取元素。如果省略設(shè)置 step 的值,則最后一個(gè)冒號就可以省略。

例如,對字符串“C語言中文網(wǎng)”進(jìn)行切片:

str="C語言中文網(wǎng)"

#取索引區(qū)間為[0,2]之間(不包括索引2處的字符)的字符串

print(str[:2])

#隔 1 個(gè)字符取一個(gè)字符,區(qū)間是整個(gè)字符串

print(str[::2])

#取整個(gè)字符串,此時(shí) [] 中只需一個(gè)冒號即可

print(str[:])

運(yùn)行結(jié)果為:

C語

C言文

C語言中文網(wǎng)

序列相加

Python 中,支持兩種類型相同的序列使用“+”運(yùn)算符做相加操作,它會將兩個(gè)序列進(jìn)行連接,但不會去除重復(fù)的元素。

這里所說的“類型相同”,指的是“+”運(yùn)算符的兩側(cè)序列要么都是序列類型,要么都是元組類型,要么都是字符串。

例如,前面章節(jié)中我們已經(jīng)實(shí)現(xiàn)用“+”運(yùn)算符連接 2 個(gè)(甚至多個(gè))字符串,如下所示:

str="c.biancheng.net"

print("C語言"+"中文網(wǎng):"+str)

輸出結(jié)果為:

C語言中文網(wǎng):c.biancheng.net

序列相乘

Python 中,使用數(shù)字 n 乘以一個(gè)序列會生成新的序列,其內(nèi)容為原來序列被重復(fù) n 次的結(jié)果。例如:

str="C語言中文網(wǎng)"

print(str*3)

輸出結(jié)果為:

'C語言中文網(wǎng)C語言中文網(wǎng)C語言中文網(wǎng)'

比較特殊的是,列表類型在進(jìn)行乘法運(yùn)算時(shí),還可以實(shí)現(xiàn)初始化指定長度列表的功能。例如如下的代碼,將創(chuàng)建一個(gè)長度為 5 的列表,列表中的每個(gè)元素都是 None,表示什么都沒有。

#列表的創(chuàng)建用 [],后續(xù)講解列表時(shí)會詳細(xì)介紹

list = [None]*5

print(list)

輸出結(jié)果為:

[None, None, None, None, None]

檢查元素是否包含在序列中

Python 中,可以使用 in 關(guān)鍵字檢查某元素是否為序列的成員,其語法格式為:

value in sequence

其中,value 表示要檢查的元素,sequence 表示指定的序列。

例如,檢查字符‘c’是否包含在字符串“c.biancheng.net”中,可以執(zhí)行如下代碼:

str="c.biancheng.net"

print('c'in str)

運(yùn)行結(jié)果為:

True

和 in 關(guān)鍵字用法相同,但功能恰好相反的,還有 not in 關(guān)鍵字,它用法檢查某個(gè)元素是否不包含在指定的序列中,比如說:

str="c.biancheng.net"

print('c' not in str)

輸出結(jié)果為:

False

和序列相關(guān)的內(nèi)置函數(shù)

Python提供了幾個(gè)內(nèi)置函數(shù)(表 3 所示),可用于實(shí)現(xiàn)與序列相關(guān)的一些常用操作。

表 3 序列相關(guān)的內(nèi)置函數(shù)

函數(shù)功能

len()

計(jì)算序列的長度,即返回序列中包含多少個(gè)元素。

max()

找出序列中的最大元素。注意,對序列使用 sum() 函數(shù)時(shí),做加和操作的必須都是數(shù)字,不能是字符或字符串,否則該函數(shù)將拋出異常,因?yàn)榻忉屍鳠o法判定是要做連接操作(+ 運(yùn)算符可以連接兩個(gè)序列),還是做加和操作。

min()

找出序列中的最小元素。

list()

將序列轉(zhuǎn)換為列表。

str()

將序列轉(zhuǎn)換為字符串。

sum()

計(jì)算元素和。

sorted()

對元素進(jìn)行排序。

reversed()

反向序列中的元素。

enumerate()

將序列組合為一個(gè)索引序列,多用在 for 循環(huán)中。

這里給大家給幾個(gè)例子:

str="c.biancheng.net"

#找出最大的字符

print(max(str))

#找出最小的字符

print(min(str))

#對字符串中的元素進(jìn)行排序

print(sorted(str))

輸出結(jié)果為:

t

.

['.', '.', 'a', 'b', 'c', 'c', 'e', 'e', 'g', 'h', 'i', 'n', 'n', 'n', 't']

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。