Python入門2

#20100729
'''
#尋求幫助
#調用內置dir函數,將返回一個列表,其中包含了對象的屬性
#一般來說以下雙劃線開頭並結尾的變量名是用來表示Python實現細節的命名模式,在列表中沒有下劃線的屬性是字符串對象能夠調用的方法
S = 'Samp'
print dir(S)
#dir函數簡單地給出了方法的名稱。查詢他們是做什麼的,你可以將其傳遞給help函數。
print help(S.index)
a = 5
print dir()
del a
print dir()
#help是一個內置函數,所謂內置函數,就是在Python中被自動加載的函數,任何時候都可以用。參數分兩種
#1、如果傳一個字符串做參數的話,它會自動搜索以這個字符串命名的模塊,方法,等
#2、如果傳入的是一個對象,就會顯示這個對象的類型的幫助

b = [1,2,3]
help(b)
#查看append的用法
help(b.append)
b.append(4)
print b
b.append('NI HAO')
print b
'''

#編寫字符串的其它方法;;;
C = 'A/nB/tC'
print len(C)
print C
#Python提供了ord和chr兩個內置的函數,用於字符與ASCII碼之間的轉換
print ord('d')
print chr(97)
#Python允許字符串包括在單引號或雙引號中(他們代表着相同的東西),它也能夠在三個引號(單引或雙引號)中表示多行字符串的形式。當採用這種形式的時候,所有的行都合併在一起,並在每一行的末尾增加了換行符。
msg = """
aaaaaaaa
bbbb'''bbbbbbbbb""bbbb’bbb
cccvvccc"""

print msg

#匹配模式
#字符串對象的方法能夠支持基於模式的文本處理。需要導入一個re的模塊,這個模塊包含了類似搜索、分割和替換等調用,但因爲使用模式去定義子字符串,可以更通用一些:

match = re.match('Hello[ /t]*(.*)world','Hello     NiHao Python world')
print match.group()
print match.group(1)

match = re.match('/(.*)/(.*)/(.*)','/usr/local/mysql')
print match.group()
print match.group(1)
print match.group(2)
print match.group(3)
'''
re.match的函數原型爲:re.match(pattern, string, flags)
第一個參數是正則表達式,這裏爲"(/w+)/s",如果匹配成功,則返回一個Match,否則返回一個None;
第二個參數表示要匹配的字符串;
第三個參數是標緻位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等
'''
text = "JGood is a handsome boy, he is cool, clever, and so on..."
m = re.match(r"(/w+)/s", text)
if m:
    print m.group(0), '/n', m.group(1)
else:
    print 'not match'
#re.search
#re.search函數會在字符串內查找模式匹配,只到找到第一個匹配然後返回,如果字符串沒有匹配,則返回None
text = "JGood is a handsome boy, he is cool, clever, and so on..."
m = re.search(r'/shan(ds)ome/s', text)
if m:
    print m.group(0), m.group(1)
else:
    print 'not search' 
'''
re.search的函數原型爲: re.search(pattern, string, flags)
每個參數的含意與re.match一樣。
re.match與re.search的區別:re.match 只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。
'''

#列表
#Python的列表對象是這個語言提供的最通用的序列。列表是一個任意類型的對象的位置相關的有序集合,它沒有固定大小。不像字符串,其大小可變的,通過對偏移量進行賦值以及其他各種列表的方法進行調用,列表確實能夠修改其大小。
#序列操作
#類表是序列的一種
L = [123,'spam',1.23]
print len(L)
#能夠對列表進行索引,切片等操作
print L[0]
print L[:-1]
print L + [4,5,6]
print L
#列型特定的操作
#列表沒有特定的約束,
#append方法擴充了列表的大小並在列表的尾部插入一項
L.append('Ni')
print L
#pop方法(等效於del的操作),移除給定偏移的一項,從而讓列表變小。
L.pop(2)
print L
L.pop(0)
print L
#insert可在任意位置後加入一項
L.insert(0, 'Test')
print L
#可指定任意一項內容進行刪除
L.remove('Ni')
print L

#大多數列表的方法都會改變列表對象,而不是創建一個新的列表
M = ['bb','dd','aa','cc']
#sort方法,默認是按照升序對列表進行排序
M.sort()
print M
#reverse,對列表進行了翻轉,切忌是對原列表(或修改後的列表)進行翻轉。而不是所謂的降序排列。
M.reverse()
print M

##邊界的檢查
#儘管列表沒有固定大小,但仍然不允許引用不存在的元素。
print L
#print L[99]

##嵌套
#python核心數據類型的一個優秀的特性就是它們支持任意的嵌套,能夠任意的組合對其進行嵌套,並可以多層次的嵌套都可以。
M = [[1,2,3],[4,5,6],[7,8,9]]
print M
print M[1][2]
#第一個操作,是讀取了第2個元素,第二個操作是讀取了那個元素內的的第三個元素

##類表解析
#處理矩陣的強大工具,假設我們需要從列舉的矩陣中提取第二列,因爲矩陣式按照行進行存儲的。所以可以通過簡單的索引即可獲取行,使用列表解析既可以同樣簡單的獲得列
col2 = [row[1] for row in M]
print col2
print M
col3 = [row[2] for row in M]
print col3
col4 = [row[1] + 2 for row in M]
print col4
col5 = [row[1] for row in M if row[1]%2 == 0]
print col5
col6 = [row[1] for row in M if row[1]%2 != 0]
print col6

print M
#列表解析創建了新的列表作爲結果,但是能夠在任何可迭代的對象上進行迭代。
diag = [M[i][i] for i in [0,1,2]]
print diag

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章