小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

初識(shí)Python(三)

 四兩哥 2011-08-24

數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)基本上就是——它們是可以處理一些 數(shù)據(jù) 的 結(jié)構(gòu) ?;蛘哒f,它們是用來存儲(chǔ)一組相關(guān)數(shù)據(jù)的。

在Python中有三種內(nèi)建的數(shù)據(jù)結(jié)構(gòu)——列表、元組和字典。我們將會(huì)學(xué)習(xí)如何使用它們,以及它們?nèi)绾问咕幊套兊煤?jiǎn)單。

列表

list是處理一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu),即你可以在一個(gè)列表中存儲(chǔ)一個(gè) 序列 的項(xiàng)目。假想你有一個(gè)購物列表,上面記載著你要買的東西,你就容易理解列表了。只不過在你的購物表上,可能每樣?xùn)|西都獨(dú)自占有一行,而在Python中,你在每個(gè)項(xiàng)目之間用逗號(hào)分割。

列表中的項(xiàng)目應(yīng)該包括在方括號(hào)中,這樣Python就知道你是在指明一個(gè)列表。一旦你創(chuàng)建了一個(gè)列表,你可以添加、刪除或是搜索列表中的項(xiàng)目。由于你可以增加或刪除項(xiàng)目,我們說列表是 可變的 數(shù)據(jù)類型,即這種類型是可以被改變的。

列表是使用對(duì)象和類的一個(gè)例子。

類也有方法,即僅僅為類而定義地函數(shù)。僅僅在你有一個(gè)該類的對(duì)象的時(shí)候,你才可以使用這些功能。例如,Python為list類提供了append方法,這個(gè)方法讓你在列表尾添加一個(gè)項(xiàng)目。例如mylist.append('an item')列表mylist中增加那個(gè)字符串。

類也有,它是僅僅為類而定義的變量。僅僅在你有一個(gè)該類的對(duì)象的時(shí)候,你才可以使用這些變量/名稱。類也通過點(diǎn)號(hào)使用,例如mylist.field。

>>> mylist=['apple','mango','banana']

>>> for i in mylist:

print i

apple

mango

banana

>>> mylist.append('rice')

>>> print mylist[3]

rice

>>> del mylist[1]  我們使用del語句為我們從列表中刪除它

>>> for i in mylist:

print i

apple

banana

rice

>>> mylist.sort() 列表的sort方法對(duì)列表排序,這個(gè)方法影響列表本身而不是返回一個(gè)修改后的列表,這就是我們所說的列表是可變的而字符串是不可變的

>>> for i in mylist:

print i

apple

banana

rice

如果你想要知道列表對(duì)象定義的所有方法,可以通過help(list)獲得完整的知識(shí)。

>>> help(list)

Help on class list in module __builtin__:

元組

元組和列表十分類似,只不過元組和字符串一樣是 不可變的 即你不能修改元組。元組通過圓括號(hào)中用逗號(hào)分割的項(xiàng)目定義。

>>> zoo=('1','2','3')

>>> new_zoo=(zoo,'4','5')

>>> print len(new_zoo)

3

>>> print new_zoo

(('1', '2', '3'), '4', '5')

>>> print zoo[2]

3

>>> print new_zoo[0][1]

2

含有0個(gè)或1個(gè)項(xiàng)目的元組。一個(gè)空的元組由一對(duì)空的圓括號(hào)組成,如myempty = ()。然而,含有單個(gè)元素的元組就不那么簡(jiǎn)單了。你必須在第一個(gè)(唯一一個(gè))項(xiàng)目后跟一個(gè)逗號(hào),這樣Python才能區(qū)分元組和表達(dá)式中一個(gè)帶圓括號(hào)的對(duì)象。即如果你想要的是一個(gè)包含項(xiàng)目2的元組的時(shí)候,你應(yīng)該指明singleton = (2 , )。

元組最通常的用法是用在打印語句中,下面是一個(gè)例子:

>>> name='michael'

>>> age=12

>>> print '%s\'s age is %d'%(name,age)

michael's age is 12

print語句可以使用跟著%符號(hào)的項(xiàng)目元組的字符串。這些字符串具備定制的功能。定制讓輸出滿足某種特定的格式。定制可以是%s表示字符串或%d表示整數(shù)。元組必須按照相同的順序來對(duì)應(yīng)這些定制。

字典

字典類似于你通過聯(lián)系人名字查找地址和聯(lián)系人詳細(xì)情況的地址簿,即,我們把(名字)和(詳細(xì)情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個(gè)人恰巧同名的話,你無法找到正確的信息。

注意,你只能使用不可變的對(duì)象(比如字符串)來作為字典的鍵

鍵值對(duì)在字典中以這樣的方式標(biāo)記:d = {key1 : value1, key2 : value2 }

字典是dict類的實(shí)例/對(duì)象

>>> contact={'liu':'33','xue':'22','wang':'44'}

>>> print "liu's age is",contact['liu']

liu's age is 33

>>> contact['li']='55'     添加一個(gè)鍵值對(duì)

>>> del contact['xue']     刪除一個(gè)鍵值對(duì)

>>> for name,age in contact.items():  字典的items方法會(huì)返回一個(gè)元組的列表,其中每個(gè)元組都包含一對(duì)項(xiàng)目——鍵與對(duì)應(yīng)的值

print "%s is %s"%(name,age)

liu is 33

li is 55

wang is 44

我們可以使用in操作符來檢驗(yàn)一個(gè)鍵/值對(duì)是否存在,或者使用dict類的has_key方法。

>>> if 'liu' in contact:

print "liu is",contact['liu']

liu is 33

序列

列表、元組和字符串都是序列,但是序列是什么,它們?yōu)槭裁慈绱颂貏e呢?序列的兩個(gè)主要特點(diǎn)是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個(gè)特定項(xiàng)目。切片操作符讓我們能夠獲取序列的一個(gè)切片,即一部分序列。

索引同樣可以是負(fù)數(shù),在那樣的情況下,位置是從序列尾開始計(jì)算的。因此,shoplist[-1]表示序列的最后一個(gè)元素而shoplist[-2]抓取序列的倒數(shù)第二個(gè)項(xiàng)目。

>>> shoplist=['apple','mango','carrot','banana']

>>> print shoplist[-1]

banana

>>> print shoplist[-2]

carrot

切片操作符是序列名后跟一個(gè)方括號(hào),方括號(hào)中有一對(duì)可選的數(shù)字,并用冒號(hào)分割。注意這與你使用的索引操作符十分相似。記住數(shù)是可選的,而冒號(hào)是必須的。

切片操作符中的第一個(gè)數(shù)(冒號(hào)之前)表示切片開始的位置,第二個(gè)數(shù)(冒號(hào)之后)表示切片到哪里結(jié)束。如果不指定第一個(gè)數(shù),Python就從序列首開始。如果沒有指定第二個(gè)數(shù),則Python會(huì)停止在序列尾。注意,返回的序列從開始位置 開始 ,剛好在 結(jié)束 位置之前結(jié)束。即開始位置是包含在序列切片中的,而結(jié)束位置被排斥在切片外。

>>> print shoplist[:]    shoplist[:]返回整個(gè)序列的拷貝。

['apple', 'mango', 'carrot', 'banana']

>>> print shoplist[1:3]

['mango', 'carrot']

你可以用負(fù)數(shù)做切片。負(fù)數(shù)用在從序列尾開始計(jì)算的位置。例如,shoplist[:-1]會(huì)返回除了最后一個(gè)項(xiàng)目外包含所有項(xiàng)目的序列切片。

>>> print shoplist[:-1]

['apple', 'mango', 'carrot']

同樣可以操作與字符串

>>> name='abcdefg'

>>> print name[:-1]

abcdef

參考

當(dāng)你創(chuàng)建一個(gè)對(duì)象并給它賦一個(gè)變量的時(shí)候,這個(gè)變量?jī)H僅 參考 那個(gè)對(duì)象,而不是表示這個(gè)對(duì)象本身!也就是說,變量名指向你計(jì)算機(jī)中存儲(chǔ)那個(gè)對(duì)象的內(nèi)存。這被稱作名稱到對(duì)象的綁定。

>>> a=[1,2,3,4]

>>> b=a

>>> del a[0]

>>> print a

[2, 3, 4]

>>> print b

[2, 3, 4]

>>> b=a[:-1]   列表的賦值語句不創(chuàng)建拷貝。你得使用切片操作符來建立序列的拷貝。

>>> print b

[2, 3]

更多字符串的內(nèi)容

字符串也是對(duì)象,同樣具有方法。這些方法可以完成包括檢驗(yàn)一部分字符串和去除空格在內(nèi)的各種工作。字符串都是str類的對(duì)象 help(str)

>>> str='abcdefgh'

>>> if str.startswith('abc'):

print 'yes'

yes

>>> if str.find('cd')!=-1:

print 'yes'

yes

>>> if 'h' in str:

print 'yes'

str類也有以一個(gè)作為分隔符的字符串join字符串序列的項(xiàng)目的整潔的方法,它返回一個(gè)生成的大字符串。

>>> delimiter='|'

>>> list=['1','2','3','4']

>>> delimiter.join(list)

'1|2|3|4'

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多