數(shù)據(jù)結構 數(shù)據(jù)結構基本上就是——它們是可以處理一些 數(shù)據(jù) 的 結構 。或者說,它們是用來存儲一組相關數(shù)據(jù)的。 在Python中有三種內建的數(shù)據(jù)結構——列表、元組和字典。我們將會學習如何使用它們,以及它們如何使編程變得簡單。 列表
列表中的項目應該包括在方括號中,這樣Python就知道你是在指明一個列表。一旦你創(chuàng)建了一個列表,你可以添加、刪除或是搜索列表中的項目。由于你可以增加或刪除項目,我們說列表是 可變的 數(shù)據(jù)類型,即這種類型是可以被改變的。 列表是使用對象和類的一個例子。 類也有方法,即僅僅為類而定義地函數(shù)。僅僅在你有一個該類的對象的時候,你才可以使用這些功能。例如,Python為 類也有域,它是僅僅為類而定義的變量。僅僅在你有一個該類的對象的時候,你才可以使用這些變量/名稱。類也通過點號使用,例如 >>> mylist=['apple','mango','banana'] >>> for i in mylist: print i apple mango banana >>> mylist.append('rice') >>> print mylist[3] rice >>> del mylist[1] 我們使用 >>> for i in mylist: print i apple banana rice >>> mylist.sort() 列表的 >>> for i in mylist: print i apple banana rice 如果你想要知道列表對象定義的所有方法,可以通過 >>> help(list) Help on class list in module __builtin__: 元組 元組和列表十分類似,只不過元組和字符串一樣是 不可變的 即你不能修改元組。元組通過圓括號中用逗號分割的項目定義。 >>> 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個或1個項目的元組。一個空的元組由一對空的圓括號組成,如 元組最通常的用法是用在打印語句中,下面是一個例子: >>> name='michael' >>> age=12 >>> print '%s\'s age is %d'%(name,age) michael's age is 12
字典 字典類似于你通過聯(lián)系人名字查找地址和聯(lián)系人詳細情況的地址簿,即,我們把鍵(名字)和值(詳細情況)聯(lián)系在一起。注意,鍵必須是唯一的,就像如果有兩個人恰巧同名的話,你無法找到正確的信息。 注意,你只能使用不可變的對象(比如字符串)來作為字典的鍵 鍵值對在字典中以這樣的方式標記: 字典是 >>> contact={'liu':'33','xue':'22','wang':'44'} >>> print "liu's age is",contact['liu'] liu's age is 33 >>> contact['li']='55' 添加一個鍵值對 >>> del contact['xue'] 刪除一個鍵值對 >>> for name,age in contact.items(): 字典的 print "%s is %s"%(name,age) liu is 33 li is 55 wang is 44 我們可以使用 >>> if 'liu' in contact: print "liu is",contact['liu'] liu is 33 序列 列表、元組和字符串都是序列,但是序列是什么,它們?yōu)槭裁慈绱颂貏e呢?序列的兩個主要特點是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個特定項目。切片操作符讓我們能夠獲取序列的一個切片,即一部分序列。 索引同樣可以是負數(shù),在那樣的情況下,位置是從序列尾開始計算的。因此, >>> shoplist=['apple','mango','carrot','banana'] >>> print shoplist[-1] banana >>> print shoplist[-2] carrot 切片操作符是序列名后跟一個方括號,方括號中有一對可選的數(shù)字,并用冒號分割。注意這與你使用的索引操作符十分相似。記住數(shù)是可選的,而冒號是必須的。 切片操作符中的第一個數(shù)(冒號之前)表示切片開始的位置,第二個數(shù)(冒號之后)表示切片到哪里結束。如果不指定第一個數(shù),Python就從序列首開始。如果沒有指定第二個數(shù),則Python會停止在序列尾。注意,返回的序列從開始位置 開始 ,剛好在 結束 位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外。 >>> print shoplist[:] ['apple', 'mango', 'carrot', 'banana'] >>> print shoplist[1:3] ['mango', 'carrot'] 你可以用負數(shù)做切片。負數(shù)用在從序列尾開始計算的位置。例如, >>> print shoplist[:-1] ['apple', 'mango', 'carrot'] 同樣可以操作與字符串 >>> name='abcdefg' >>> print name[:-1] abcdef 參考 當你創(chuàng)建一個對象并給它賦一個變量的時候,這個變量僅僅 參考 那個對象,而不是表示這個對象本身!也就是說,變量名指向你計算機中存儲那個對象的內存。這被稱作名稱到對象的綁定。 >>> 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] 更多字符串的內容 字符串也是對象,同樣具有方法。這些方法可以完成包括檢驗一部分字符串和去除空格在內的各種工作。字符串都是 >>> str='abcdefgh' >>> if str.startswith('abc'): print 'yes' yes >>> if str.find('cd')!=-1: print 'yes' yes >>> if 'h' in str: print 'yes'
>>> delimiter='|' >>> list=['1','2','3','4'] >>> delimiter.join(list) '1|2|3|4' |
|