尋找協助
dir(string) #可以查看模組所有的成員變數和函數
#下面的代碼可以把變數和函數分開放到list裡面
for fv in dir(string):
name="string.%s"%fv
if callable(eval(name)):
funOrC.append(fv)
else:
vars.append(fv)
有兩個函數需要說明,
eval, 功能是將字串產生語句執行, 比如eval('string.strip()')可以把字串轉化為真正的函數對象
有了eval, 就可以在code中動態執行使用者輸入的任何語句, 很強大, 不過也有些危險, 可以通過後面的參數對可執行檔語句進行限制.
callable, 就是判斷對象是否為函數, 可調用
help(string.capwords), 通過這個可以看到每個函數和成員的說明
List
L.append(var) #追加元素
L.insert(index,var)
L.pop(var) #返回最後一個元素,並從list中刪除之
L.remove(var) #刪除第一次出現的該元素
L.count(var) #該元素在列表中出現的個數
L.index(var) #該元素的位置,無則拋異常
L.extend(list) #追加list,即合并list到L上
L.sort() #排序
sort比較複雜, 給些例子
L = [2,3,1,4]
L.sort() #[1,2,3,4]
L.sort(reverse=True) #[4,3,2,1]
L = [('b',2),('a',1),('c',3),('d',4)]
L.sort(cmp=lambda x,y:cmp(x[1],y[1])) #給出比較兩個item的cmp函數
L.sort(key=lambda x:x[1]) #給出提取比較特徵值key的函數
L.sort(key=lambda x:(x[1],x[0])) #多關鍵字比較, 先比較x[1], 相同比x[0]
0第一個元素,-1最後一個元素,
-len第一個元 素,len-1最後一個元素
L = range(1,5) #即 L=[1,2,3,4],不含最後一個元素
L = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9]
list comprehension
[ <expr1> for k in L if <expr2> ]
L1 = L #L1為L的別名,用C來說就是指標地址相同,對L1操作即對L操作。函數參數就是這樣傳遞的
L1 = L[:] #L1為L的複製,即另一個拷貝
String
S.find(substring, [start [,end]]) #可指範圍尋找子串,返回索引值,否則返回-1
S.rfind(substring,[start [,end]]) #反向尋找
S.index(substring,[start [,end]]) #同find,只是找不到產生ValueError異常
S.rindex(substring,[start [,end]])#同上反向尋找
S.count(substring,[start [,end]]) #返回找到子串的個數
string.strip(s)剔除字串s左右空格
string.lstrip(s), string.rstrip(s)
S.isalpha() #是否全是字母,並至少有一個字元
S.isdigit() #是否全是數字,並至少有一個字元
S.isspace() #是否全是空白字元,並至少有一個字元
S.islower() #S中的字母是否全是小寫
S.isupper() #S中的字母是否便是大寫
S.istitle() #S是否是首字母大寫的
S.capitalize() #首字母大寫
S.lower() #轉小寫
S.upper() #轉大寫
S.swapcase() #大小寫互換
S.split(' ') #將string轉list,以空格切分
'+'.join(list) #將list轉string,以加號串連
oat(str) #變成浮點數,float("1e-1") 結果為0.1
int(str) #變成整型, int("12") 結果為12
int(str,base) #變成base進位整型數,int("11",2) 結果為3
maketrans, translate, 這兩個函數很多地方講的比較複雜,其實就是用maketrans建立一個替換表, 用translate去進行替換
string.maketrans(intab, outtab) --> This method returns a translation table that maps each character in the intab string into the character at the same position in the outtab string.
string.maketrans('', '') #沒有映射,實際上就是按原始字元保留
string.maketrans('abc', 'ABC') #小寫替換成大寫
string.translate(table [,deletechars]) --> Return a copy of the string S, where all characters occurring in the optional argument deletechars are removed, and the remaining characters have been mapped through the given translation table. 說白了就是把deletechars中的刪掉, 然後其他的根據替換表進行替換.
Dictionary
dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}
每一個元素是pair,包含key、value兩部分。key是Integer或string類型,value 是任意類型。
D.get(key, 0) #同dict[key],多了個沒有則返回預設值,0。[]沒有則拋異常
D.has_key(key) #有該鍵返回TRUE,否則FALSE
D.keys() #返回字典鍵的列表
D.values()
D.items()
dict1 = dict #別名
dict2=dict.copy() #複製,即另一個拷貝。
Random
random.random()用於產生一個0到1的隨機符點數: 0 <= n < 1.0
random.uniform(a, b),用於產生一個指定範圍內的隨機符點數,兩個參數其中一個是上限,一個是下限
random.randint(a, b),用於產生一個指定範圍內的整數。
random.randrange([start], stop[, step]),從指定範圍內,按指定基數遞增的集合中 擷取一個隨機數。
random.shuffle(x[, random]),用於將一個列表中的元素打亂。
random.choice從序列(list,tuple)中擷取一個隨機元素
random.sample(sequence, k),從指定序列中隨機擷取指定長度的片斷。sample函數不會修改原有序列。