Dictionary
建立一個Dictionary
ab={"key1":"a","key2":"b","key3":"c"},這個語句建立一個dictionary並為他添加三個字典項,注意這裡的key只能是一個不變類,也就是說是一個建立了就不能改變內容的值,比如你使用一個list對象作為鍵,就會報錯
添加或者修改一個字典項
ab["key4"]="d"
字典對象拷貝
ab.copy()
注意這個函數進行是進行深拷貝還是潛拷貝呢?也就是傳遞應用還是傳遞值呢?
我們可以作個實驗
>>> dict={1:'a',2:'b'}
>>> dict2=dict.copy()
>>> dict2
{1: 'a', 2: 'b'}
>>> dict
{1: 'a', 2: 'b'}
>>> dict[2]='c'
>>> dict
{1: 'a', 2: 'c'}
>>> dict2
{1: 'a', 2: 'b'}
可以看出進行的深拷貝,這和.net的拷貝是不同的,.net的拷貝預設是傳遞值
Sequence介面
Sequence 是上面這些集合(list,tuple,dictionary)類的介面,定義了索引器和slice的功能.對於索引器.net程式員很熟悉比如在 list和tuple中我們可以通過list[index]的方法來訪問列表中的值,這個非常類似於.net中的索引器,slice是指返回一個列表的一部分
比如
>>> a=[1,2,3,4,5]
>>> a[1:3]
[2, 3]
通過a[1:3]我們返回了a列表中從第二個元素到第四個元素的子列表,那麼如果我們要返回一個列表的所有資料怎麼辦呢?通過a[:]我們可以返回a的所有資料,注意,這其實也是一個深拷貝,而非引用拷貝
dict1=dict2[:]
python本身沒有提供介面這個東東,但是從.Net和Java程式員看來,也許把Sequence表示成介面要容易理解一些,而且從代碼實現來說,python的.net版本中列表對象就是從一個叫做ISequence的介面繼承的
public class Tuple : ISequence, ICollection, IEnumerable, IEnumerable<object>, IValueEquality, IList<object>, ICodeFormattable, IParameterSequence
ISequence的定義了索引和slice的方法
有關python介面的資源可以參看
http://blog.csdn.net/pjeby/archive/2007/03/18/1532666.aspx
字串類
初始化字串的方法
str="my name is zy"
也可以用單引號
str='my name is zy'
也可以用三引號
str='''發送到發送到發送到非'''
其他方法大家可以通過help(string)來看到,我就不重複介紹了
這裡介紹幾個特殊的用法
string.startswith(str):字串是否以某個字串開頭,是則返回真
string.find(str):在字串中尋找某個字串,找到返回真
if 'str' in name:這是上面尋找語句的另外一種寫法
字串串連,類似.net中string類的join方法,python字串也可以把一個數組中的字串串連起來形成一個長字串,但是注意這裡的分隔字元,.net中我們用string的靜態方法,string.join(string separator,string[] list),前一個參數設定串連後的分隔字元,後一個設定待串連的數組,但是由於python不存在靜態方法,所以他稍微有些不同,大家看看下面語句:
delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
串連符變成了句子的主語,大家注意到了嗎?