Python數(shù)據(jù)類型-列表(List)

列表是Python最常用的數(shù)據(jù)類型,是以一個(gè)方括號(hào)內(nèi)的逗號(hào)分隔值出現(xiàn)砰奕,列表內(nèi)的數(shù)據(jù)項(xiàng)不必相同播急。

如果我們收到一個(gè)"Give Me 5!“的字符串信息庇配。O(∩_∩)O.

s =?"Give Me 5!"

以下代碼會(huì)為我們生成一個(gè)與之相關(guān)的列表。

列表推導(dǎo)式? s1=[x for x in s] 生成?['G', 'i', 'v', 'e', ' ', 'M', 'e', ' ', '5', '!']? 從這我們可以看到列表內(nèi)的元素確實(shí)可以不同尊残。

列表推導(dǎo)式是從另外一個(gè)列表經(jīng)過處理生成新列表的方法炒瘸,這個(gè)方法由自己選用。

例1: s = [2017, 600776, 2592, 2811, 600775]

s1 = [str(x).zfill(6) for x in s] 生成 ['002017', '600776', '002592', '002811', '600775]

例2:s =?[1,2, 3, 4, 5],s1 = ['a','b','c','d','e']

s2 =[(x,y) for x,y in zip(s,s1)] 生成?[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

例3: s = os.listdir(os.getcwd())

s1=[x for x in s if x.endswith(".ipynb") ] 生成?['thskp.ipynb', 'ths.ipynb', 'caa.ipynb']

這其實(shí)是當(dāng)前文件夾下文件類型是.ipynb的文件列表寝衫,是不是很有趣呢顷扩。

例4: s=['hoooyannn','luuuwooo']

s1 =?['163.com','qq.com']

s2 = [m+"@"+n for m in s for n in s1] 生成 ['hoooyannn@163.com', 'hoooyannn@qq.com', 'luuuwooo@163.com', 'luuuwooo@qq.com']

這里實(shí)際上是兩層循環(huán),生成了兩個(gè)列表列表項(xiàng)的組合慰毅,試試吧隘截。

例5:s1=??[1,2, 3, 4, 5]? ?s2=?[3, 4, 5,6,7]

s = [x for x in s1 if x not in s2]

這實(shí)際上是s1和s2的差集

例6:s1=??[1,2, 3, 4, 5]? ?s2=?[3, 4, 5,6,7]

s = [x for x in s1 if x in s2]

這實(shí)際上是s1和s2的交集

內(nèi)置函數(shù)str.split?s2 = s.split(" ") 生成?['Give', 'Me', '5!']? ?split()中的參數(shù)是分割的標(biāo)志,這里是以空格為分割。

內(nèi)置函數(shù)list() 可以把其它可迭代元素轉(zhuǎn)換成一個(gè)列表

假如我們有如下一個(gè)Series對(duì)象?s = pd.Series(data=['002017', '600776', '002592', '002811', '600775'],name='code')

0? ? 002017

1? ? 600776

2? ? 002592

3? ? 002811

4? ? 600775

Name: code, dtype: object

將它轉(zhuǎn)換為一個(gè)列表對(duì)象 s = list(s) 將生成?['002017', '600776', '002592', '002811', '600775']

可以用來轉(zhuǎn)換任何可迭代的對(duì)象婶芭,如元組东臀,字典,集合都是常見的可迭代對(duì)象犀农。

當(dāng)前也可以直接定義列表對(duì)象惰赋。 s =['I','Love','Python'] ,一對(duì)方括號(hào)內(nèi)定義逗號(hào)分隔的不同項(xiàng)呵哨,就是列表類型赁濒。

列表常用操作

append:

s= ['Give', 'Me', '5!']

s.append("Thanks!")

那么會(huì)得到 s=?['Give', 'Me', '5!', 'Thanks!']

insert:

s= ['Give', 'Me', '5!']

s.insert(0,"Please")

s.insert(-1,"best")

那么會(huì)得到 s=['Please', 'Give', 'Me', 'best', '5!']

remove:

s = ['hoooyannn@163.com', 'hoooyannn@qq.com', 'luuuwooo@163.com', 'luuuwooo@qq.com']

s2 = ['luuuwooo@163.com', 'luuuwooo@qq.com']

for x in s2:

? ? s.remove(s2)

那么會(huì)得到s =?['hoooyannn@163.com', 'hoooyannn@qq.com']

pop:

s= ['Give', 'Me', '5!']

m = s.pop()?

會(huì)得到 s=['Give', 'Me']? ? m=?'5!'

可利用該特性使用列表定義一個(gè)堆棧。

extend:

s1 = ['luuuwooo@163.com', 'luuuwooo@qq.com']

s2 =?['hoooyannn@163.com', 'hoooyannn@qq.com']

s1.extend(s2)

會(huì)得到 s1=['luuuwooo@163.com', 'luuuwooo@qq.com', 'hoooyannn@163.com', 'hoooyannn@qq.com']

s2不變孟害。

index:

s= ['Please','Give', 'Me', '5!']

m = s.index(‘Give')

會(huì)得到 m = 1 該列表中’Give'出現(xiàn)的位置索引拒炎。如果參數(shù)項(xiàng)在列表中不存在,會(huì)出現(xiàn)異常挨务,所以最好先用in,

not in枝冀,或者s.count('Give')先做判斷。

reverse:

s=['Enough','is','enough']

s.reverse()

得到s=['enough', 'is', 'Enough']

總結(jié)起來就是耘子,如果想刪除列表末尾項(xiàng)果漾,用pop,刪除指定項(xiàng),用remove谷誓,獲取指定項(xiàng)的索引用index绒障。

使插入的元素在列表末尾用append,指定插入元素的位置用insert捍歪,如果增加來自另外一個(gè)列表的

列表項(xiàng)用extend户辱。

改變現(xiàn)有列表可用reverse反轉(zhuǎn)。

列表擴(kuò)展

使用列表構(gòu)造一個(gè)堆棧糙臼,堆棧具有后進(jìn)先出(LIFO)的特征庐镐。

class Stack():

? ? """

? ? stack is a last in first out

? ? data structure

? ? """

? ? def __init__(self,size):

? ? ? ? """

? ? ? ? A stack is a last in first out

? ? ? ? data structure

? ? ? ? :type size:int

? ? ? ? """

? ? ? ? self.size = size

? ? ? ? self.stack=[]

? ? ? ? self.top=-1

? ? # Getter function

? ? @property

? ? def size(self):

? ? ? ? return self._size


? ? # Setter function

? ? @size.setter

? ? def size(self, value):

? ? ? ? if not isinstance(value, int):

? ? ? ? ? ? raise TypeError('Expected a int')

? ? ? ? if not value > 0:

? ? ? ? ? ? raise ValueError('Expected value bigger than zero')

? ? ? ? self._size= value


? ? # Deleter function

? ? @size.deleter

? ? def size(self):

? ? ? ? raise AttributeError("Can't delete attribute")


? ? def push(self,x):

? ? ? ? """

? ? ? ? push an object to stack

? ? ? ? the object is placed at the last position

? ? ? ? :type x: an object that is to be pushed to the stack

? ? ? ? """

? ? ? ? if self.isfull():

? ? ? ? ? ? raise Exception("the stack is full now")

? ? ? ? else:

? ? ? ? ? ? self.stack.append(x)


? ? def pop(self):

? ? ? ? """

? ? ? ? return the last pushed objected from stack

? ? ? ? and delete it from the stack

? ? ? ? """

? ? ? ? if self.isempty():

? ? ? ? ? ? raise KeyError("the stack is empty")

? ? ? ? else:

? ? ? ? ? ? self.top = self.top -1

? ? ? ? ? ? self.stack.pop()


? ? def peek(self):

? ? ? ? """

? ? ? ? return the item at the top of the stack

? ? ? ? raise keyerror if the stack is empty

? ? ? ? """

? ? ? ? if self.isempty():

? ? ? ? ? ? raise KeyError("the stack is empty")

? ? ? ? return self.stack[len(self.stack)-1]



? ? def isfull(self):

? ? ? ? """

? ? ? ? if the stack is full with object return True

? ? ? ? otherwise return False

? ? ? ? """

? ? ? ? return self.top +1 == self.size



? ? def isempty(self):

? ? ? ? """

? ? ? ? if no object in the stack return True

? ? ? ? otherwise return False

? ? ? ? """

? ? ? ? return self.top -1 == -1


? ? def show(self):

? ? ? ? """

? ? ? ? display the objects in stack

? ? ? ? """

? ? ? ? print (self.stack)


? ? def clear(self):

? ? ? ? """

? ? ? ? delete all objects from the stack

? ? ? ? """

? ? ? ? self.stack=[]

? ? ? ? self.top=-1


? ? def __iter__(self):

? ? ? ? """

? ? ? ? visit items from top to bottom of stack

? ? ? ? """

? ? ? ? length = len(self.stack)

? ? ? ? for i in range(length):

? ? ? ? ? ? yield self.stack[length-i-1]

在這里實(shí)現(xiàn)了固定大小的堆棧,并且在初始化時(shí)檢查參數(shù)類型变逃。

實(shí)驗(yàn)一下:

s = Stack(10)

for i in range(5):

? ? s.push(i)

s.show() 顯示?[0, 1, 2, 3, 4]

m = iter(s)

for i in range(len(s)):

? ? print(next(m))

列表和字符串的轉(zhuǎn)換:

l= ['Please','Give', 'Me', '5!']

s = " ".join(l)

這樣我們將列表還原成了字符串必逆,實(shí)際生成s="Please Give Me 5!"


列表的并集,差集揽乱,交集:

有如下兩個(gè)list:

listA=["apple","banana","pears","tomato"]

listB=["tomato","chilli"]

交集:

inte = list(set(listA).intersection(set(listB)))

并集:

uni = list(set(listA).union(set(listB)))

差集:

diff = list(set(listA).difference(set(listB)))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末名眉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凰棉,更是在濱河造成了極大的恐慌损拢,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撒犀,死亡現(xiàn)場(chǎng)離奇詭異福压,居然都是意外死亡掏秩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門荆姆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒙幻,“玉大人,你說我怎么就攤上這事胞枕「松罚” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵腐泻,是天一觀的道長(zhǎng)决乎。 經(jīng)常有香客問我,道長(zhǎng)派桩,這世上最難降的妖魔是什么构诚? 我笑而不...
    開封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮铆惑,結(jié)果婚禮上范嘱,老公的妹妹穿的比我還像新娘。我一直安慰自己员魏,他們只是感情好丑蛤,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撕阎,像睡著了一般受裹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虏束,一...
    開封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天棉饶,我揣著相機(jī)與錄音,去河邊找鬼镇匀。 笑死照藻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的汗侵。 我是一名探鬼主播幸缕,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晃择!你這毒婦竟也來了冀值?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤宫屠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滑蚯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浪蹂,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抵栈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坤次。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片古劲。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缰猴,靈堂內(nèi)的尸體忽然破棺而出产艾,到底是詐尸還是另有隱情,我是刑警寧澤滑绒,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布闷堡,位于F島的核電站,受9級(jí)特大地震影響疑故,放射性物質(zhì)發(fā)生泄漏杠览。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一纵势、第九天 我趴在偏房一處隱蔽的房頂上張望踱阿。 院中可真熱鬧,春花似錦钦铁、人聲如沸软舌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佛点。三九已至,卻和暖如春躏仇,著一層夾襖步出監(jiān)牢的瞬間恋脚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工焰手, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糟描,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓书妻,卻偏偏與公主長(zhǎng)得像船响,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躲履,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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

  • 文/澧之謠 “怡春樓”是長(zhǎng)安城一個(gè)熱鬧繁華的所在工猜,但是這對(duì)于幼微母女二人來說米诉,并沒有太多的影響。相比前院的熱鬧篷帅,幼...
    澧之謠閱讀 1,178評(píng)論 5 10
  • 【0309能量按鈕】6287-蒲公英 推薦人:三連老鐵3194-蘑菇貓 & 五連老鐵 5286-快樂中國(guó)520 支...
    蒲公英_2018閱讀 119評(píng)論 0 0
  • 今天是喧鬧已久的進(jìn)博會(huì)開幕史侣,一早朋友圈被交通障礙刷屏拴泌。按照政府的號(hào)召,今天應(yīng)該出勤的部分國(guó)家機(jī)構(gòu)和學(xué)校都是放假的惊橱,...
    Virginia濃閱讀 259評(píng)論 0 0
  • 第一章 來到陌生的城市 A市税朴,冷心如一...
    荷本清香閱讀 978評(píng)論 0 1
  • 從古至今回季,我們一直在努力的分享著。 史前我們分享是為了生存的壓力正林,今天我告訴你這里有野果泡一,明天你告訴我哪里有食物。...
    Lucas的學(xué)習(xí)筆記閱讀 154評(píng)論 0 0