一、使用*號來展開序列,*是序列展開,每一個元素都當作一個參數。
ls = (1, 2, 3);
foo(ls),這樣foo只有一個參數,就是ls這個列表自己
foo(*ls), foo獲得3個參數,分別爲1 2 3,等價於foo(1,2,3)html
二、python 讀寫文件中 w與wt ; r與rt 有何區別?python
't' 表示‘text mode’, 相對應的是"binary mode'編程
就是說你是以文本模式打開,仍是二進制模式打開。由於默認就是文本模式,因此'rt' 等價於'r'app
三、int64與int的區別?函數式編程
1)int是python的基本類型,而int64是numpy中引入的一個類,即 numpy.int64 ;函數
2)使用numpy模塊中的numpy.sum()方法獲得的結果是int64,而使用默認的sum()獲得結果的int類型;工具
下面代碼中,雖然執行結果a和b的數值都是6,可是類型不一樣post
1 import numpy as np 2 # a 的類型是int64 3 a = np.sum([1,2,3]) 4 # b 的類型是int 5 b = sum([1,2,3])
3)int64不會報除0的錯誤(事實上numpy中的其餘類型也不會報錯,好比float64等);而int會報除0錯誤(其餘基本類型也會,好比float等)測試
測試以下:代表numpy 的數據類型(int6四、float64等)比python的基本類型(int、float等)功能強大,計算能力更強,能夠有nan、inf等結果url
1 import numpy as np 2 #-------- int 例子 ------------- 3 # 也能夠寫int(1),也可不寫,由於默認是int類型 4 a = 1 5 b = 0 6 c = 0 7 8 #下面都會報 int 不能除0錯誤 9 r1 = a / b 10 r2 = b / c 11 #下面都會報 float 不能除0錯誤 12 r3 = a *1.0 / b 13 r4 = b *1.0 / c 14 15 #--------- int64 例子 ----------- 16 17 a = np.int64(1) 18 b = np.int64(0) 19 c = np.int64(0) 20 21 #下面語句不會除0報錯,會提示,但不報錯和中斷 22 # 運行結果: r1 = 0 , r2 = 0 23 r1 = a / b 24 r2 = b / c 25 26 #運行結果: r3 = inf ,r4 = nan 27 #inf 表示無窮大,nan表示not a number ,不是數字 28 r3 = a *1.0 / b 29 r4 = b *1.0 / c
四、type()函數可用於返回某個數據的數據類型;
1 a = 1 2 type(a)
五、& 跟 and 的區別?
& 是位運算;and 是邏輯運算。
>>> a = 1 >>> b = 2 >>> #1 的二進制是 01,2的二進制是 10 >>> a&b 0 >>> a and b 2
&雖然是位運算,可是若是操做數是0或1的話,也相似於邏輯運算;
>>> a=1 >>> b=1 >>> c=0 >>> a & b 1 >>> a & c 0
六、Lambda 表達式有何用處?如何使用?
【引言】這是python支持一種有趣的語法,它容許你快速定義單行的最小函數(請記住它本質就是個函數),相似C語言中的宏,能夠用在任何須要函數的地方,示例以下:
>>> g = lambda x: x * 2 >>> g(3) 6 >>> (lambda x: x * 2)(3) 6
咱們也能夠把filter map reduce 和lambda結合起來用,函數就能夠簡單的寫成一行。例如
>>>kmpathes = filter(lambda kmpath: kmpath, map(lambda kmpath: string.strip(kmpath), string.split(l, ':')))
看起來麻煩,其實就像用語言來描述問題同樣,很是優雅。
對 l 中的全部元素以':'作分割,得出一個列表。對這個列表的每個元素作字符串strip,造成一個列表。對這個列表的每個元素作直接返回操做(這個地方能夠加上過濾條件限制),最終得到一個字符串被':'分割的列表,列表中的每個字符串都作了strip,並能夠對特殊字符串過濾。
map( lambda x: x*x, [y for y in range(10)] )
def sq(x): return x * x map(sq, [y for y in range(10)])
a = [1, 2, 3]
f = lambda x : x + 1
map(f, a)
map( lambda x : x + 1, [1, 2, 3] )
a = [1, 2, 3] r = [] for each in a: r.append(each+1)
對sequence中的item依次執行function(item),將執行結果爲True的item組成一個List/String/Tuple(取決於sequence類型)返回,示例以下:
>>> def f(x): return x % 2 != 0 and x % 3 != 0 >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] >>> def f(x): return x != 'a' >>> filter(f, "abcdef") 'bcdef'
對sequence中的item依次執行function(item),將執行結果組成一個List返回
另外map也支持多個sequence,固然這也要求function支持相應數量的參數輸入,示例以下:
>>> def cube(x): return x*x*x >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] >>> def cube(x) : return x + x >>> def add(x, y): return x+y >>> map(add, range(8), range(8)) [0, 2, 4, 6, 8, 10, 12, 14]
對sequence中的item順序迭代調用function,若是有starting_value,還能夠做爲初始值調用,例如能夠用來對List求和,示例以下:
>>> def add(x,y): return x + y >>> reduce(add, range(1, 11)) (注:1+2+3+4+5+6+7+8+9+10) >>> reduce(add, range(1, 11), 20) (注:1+2+3+4+5+6+7+8+9+10+20)
s = [('a', 3), ('b', 2), ('c', 1)]
sorted(s, key=lambda x:x[1])>>>>>>
s = [('a', 3), ('b', 2), ('c', 1)]
>>> l = ['foo', 'bar', 'far'] >>> map(lambda x: x.upper(), l) ['FOO', 'BAR', 'FAR'] >>> filter(lambda x: 'f' in x, l) ['foo', 'far'] >>> map(lambda x: x.upper(), filter(lambda x: 'f' in x, l)) ['FOO', 'FAR'] >>> reduce(lambda a, b: a * b, xrange(1, 5)) # 計算 1*2*3*4 = 24 24
python 字典(dict)的特色就是無序的,按照鍵(key)來提取相應值(value),若是咱們須要字典按值排序的話,那能夠用下面的方法來進行:
1)下面的是按照value的值從大到小的順序來排序。
dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True)
print dict
輸出的結果:
[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]
下面咱們分解下代碼
print dic.iteritems() 獲得[(鍵,值)]的列表。
而後用sorted方法,經過key這個參數,指定排序是按照value,也就是第一個元素d[1的值來排序。reverse = True表示是須要翻轉的,默認是從小到大,翻轉的話,那就是從大到小。
2)對字典按鍵(key)排序:
dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[0]) d[0]表示字典的鍵
print dict
參考:【python文件夾與文件的操做】
若是目錄有多級,則建立最後一級。若是最後一級目錄的上級目錄有不存在的,則會拋出一個OSError。
makedirs( path [,mode] )
做用: 建立遞歸的目錄樹,能夠是相對或者絕對路徑,mode的默認模式也是0777。
若是子目錄建立失敗或者已經存在,會拋出一個OSError的異常,Windows上Error 183即爲目錄已經存在的異常錯誤。若是path只有一級,與mkdir同樣。例如: