python內(nèi)置數(shù)據(jù)類型之列表

1.什么是列表?

  1. 列表是有序的妄辩,線性數(shù)據(jù)結(jié)構(gòu)惑灵;
  2. 列表可以使用索引;
  3. 列表的元素可以為任意對象(數(shù)字眼耀,字符串英支,對象,列表等)哮伟;
  4. 列表是可變化的潭辈;
  5. 使用[]表示;
  6. 列表的元素可以重復(fù)澈吨。

2.列表的定義

  1. list()方法,得到空列表
  2. []中括號把敢,得到空列表
  3. [元素1,元素2谅辣,元素3修赞,...],帶初始值得到的列表
  4. list(range()) 得到有值的列表

<div class="note danger no-icon"><p>說明:通常在定義空列表時候使用[],定義含有初始值的列表用list()方法柏副。</p></div>

3.列表的相關(guān)操作

1 .列表的訪問

lst[#] 通過下標(biāo)訪問勾邦,從0開始。 
ps:如果#超過下標(biāo)的范圍時候會出現(xiàn)IndexError的錯誤割择。 
如果#為負(fù)號眷篇,則索引從右邊開始,#無論為正負(fù)均有范圍荔泳,超過范圍會報錯蕉饼。 
lst = list(range(0,9)) #生產(chǎn)列表
l1 = lst[3] #通過正索引訪問元素
l2 = lst[-1] #通過負(fù)索引訪問元素
print(l1)
print(l2)
#說明,如果正負(fù)索引超界玛歌,則會報錯昧港。
#錯誤代碼:IndexError: list index out of range
3
8

2 .列表元素查找

查找元素:L.index( value,[start[stop]])方法:返回查找到的第一個value值的索引。

start表示從第幾個索引開始支子,stop表示到哪個索引結(jié)束创肥,均可省略。
b.但是如果出現(xiàn)stop值朋,其前必須有start值叹侄,索引時包含start位置不包含stop位置。
c.如果匹配不到元素昨登,則返回:ValueError: xx is not in list
d.index查找元素的時間復(fù)雜的為O(n)

lst = list(range(11,19)) 
print(lst)
[11, 12, 13, 14, 15, 16, 17, 18]
lst.index(13) #13的索引值為2
2

統(tǒng)計元素:L.count(value) 統(tǒng)計列表中出現(xiàn)多少個value值趾代。
len(L),求list列表的長度篙骡。

count方法的時間復(fù)雜的為O(n)

3 .列表元素操作

a.修改元素

直接賦值稽坤,L[#]=value丈甸。

為列表的索引值
索引不能越界糯俗,會報錯IndexError: list assignment index out of range
修改列表自身

lst = list(range(1,10)) 
lst[2]=111  
lst[4]=123
lst
[1, 2, 111, 4, 123, 6, 7, 8, 9]
b.增加元素

L.append(#),修改L本身睦擂,并且追加在列表末尾得湘。
L.extend([#1,#2,#3]) , 將可迭代對象擴(kuò)展到列表末尾。
L+['a','b','c'] 顿仇,不修改列表本身淘正,返回一個新的列表。

c.插入元素

L.insert(idx,#)臼闻,將在該idx前插入#鸿吆,會修改L本身。

當(dāng)idx為正數(shù)述呐,且大于列表本身的索引數(shù)惩淳,
會實(shí)現(xiàn)append方法將插入在元素最末尾;當(dāng)idx為負(fù)數(shù)乓搬,且小于-len(L)+1時將會插入到列表最前思犁。
append的時間復(fù)雜度是O(1),效率和數(shù)據(jù)的規(guī)模無關(guān)代虾。

insert的時間復(fù)雜度是O(n),效率個數(shù)據(jù)規(guī)模正相關(guān)激蹲。

d.移除元素

L.remove(value)棉磨,修改自身,從左到右刪除第一個匹配到的值学辱。
L.pop(idx)乘瓤,返回并刪除索引指向的值。如果不指定idx项郊,將刪除列表最后的元素馅扣。

pop不指定值時,時間復(fù)雜度是O(1)的着降;
pop指定idx時差油,時間復(fù)雜度是O(n)的。

L.clear()任洞,刪除索引元素蓄喇。慎用,會引起垃圾回收交掏。

e.列表反轉(zhuǎn)

reverse()妆偏,修改自身,反轉(zhuǎn)列表元素盅弛。

f.列表排序

L.sort(),排序操作钱骂,修改自身,升序排列挪鹏。 L.sort(reverse=True)见秽,逆序排列。

4 .列表進(jìn)階

1. 列表復(fù)制

copy()方法讨盒,列表淺拷貝解取。遇到引用類型,僅僅復(fù)制引用地址返顺。當(dāng)原來引用類型的值發(fā)生變化時禀苦,拷貝后的列表的值也隨之發(fā)生變化。

lst = list(range(4))
lst1 = lst.copy()
print(lst1)

#淺拷貝特性說明
lst = [1,[2,3,4],5]
lst1 = lst.copy()
lst1[1][2] = 11
lst[1][0]=22
print(lst)
print(lst1)
#lst = lst1,引用內(nèi)的值改變遂鹊,列表均發(fā)生變化振乏。
[0, 1, 2, 3]
[1, [22, 3, 11], 5]
[1, [22, 3, 11], 5]

copy模塊下的deepcopy() 提供了深拷貝方法。

import copy
lst = [1,[2,3,4],5]
lst1 = copy.deepcopy(lst)
lst1[1][2] = 11
print(lst)
print(lst1)
#lst != lst1  對比lst.copy方法秉扑。
[1, [2, 3, 4], 5]
[1, [2, 3, 11], 5]

2. 打亂列表

需要引入random模塊

# random.shuffle(list)
lst = [1,323,4,-3,[1,3],None,(1,34),{1:3}]
random.shuffle(lst)  #修改自身慧邮,返回值為None,不能使用其他空間接受。
lst  #通過shuffle打亂后列表的順序發(fā)生變化赋咽。
[323, {1: 3}, None, [1, 3], 1, -3, 4, (1, 34)]

random模塊的其他對象:

import random
print(random.randint(1,11))  #返回[1,11] 之間的整數(shù)旧噪,注意左右閉區(qū)間
print(random.choice(range(11))) #從非空序列中隨機(jī)挑選一個整數(shù)
11
0
#randrange ([start,] stop [,step])  從指定的范圍內(nèi),按指定基數(shù)遞增的集合中獲取一個隨機(jī)數(shù)
random.randrange(1,7,2) #從[1,7)中脓匿,步長為2的數(shù)字中獲取一個數(shù)
5

更多歡迎訪問:http://www.mykernel.cn/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淘钟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子陪毡,更是在濱河造成了極大的恐慌米母,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毡琉,死亡現(xiàn)場離奇詭異铁瞒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)桅滋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進(jìn)店門慧耍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丐谋,你說我怎么就攤上這事芍碧。” “怎么了号俐?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵泌豆,是天一觀的道長。 經(jīng)常有香客問我吏饿,道長踪危,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任猪落,我火速辦了婚禮贞远,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘许布。我一直安慰自己兴革,他們只是感情好绎晃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布蜜唾。 她就那樣靜靜地躺著,像睡著了一般庶艾。 火紅的嫁衣襯著肌膚如雪袁余。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天咱揍,我揣著相機(jī)與錄音颖榜,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛掩完,可吹牛的內(nèi)容都是我干的噪漾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼且蓬,長吁一口氣:“原來是場噩夢啊……” “哼欣硼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起恶阴,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤诈胜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冯事,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焦匈,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年昵仅,在試婚紗的時候發(fā)現(xiàn)自己被綠了缓熟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡摔笤,死狀恐怖荚虚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情籍茧,我是刑警寧澤版述,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站寞冯,受9級特大地震影響渴析,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吮龄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一俭茧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漓帚,春花似錦母债、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至昧辽,卻和暖如春衙熔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搅荞。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工红氯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留框咙,地道東北人。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓痢甘,卻偏偏與公主長得像喇嘱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子塞栅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內(nèi)容