1. 程式人生 > >【python深入4】內置函數

【python深入4】內置函數

python

1)all()

判斷可叠代對象中是否有空或為0的對象

all(['a','b','c'])  列表list,元素都不為空或0  True
all([0,1,2,3]) 列表list,存在一個為0的元素 False
all(['',1,2])  列表list,存在空元素 False
all([])  空列表list,True

2)any()

可叠代對象中都為0時,為False

3)callable()

檢查一個對象是否可調用

4)divmod()

除法.返回一個元祖(商,余數)

divmod(7,2)--->(3,1)

5)enumerate()

將可遍歷的數據對象組合為一個索引序列,for循環時會輸出索引和數據

>>>a = [1,2,3]
>>>for i,j in enumerate(a):
        print i,j
解析:0 1
     1 2
     2 3

6)eval()

執行一個字符串表達式,並返回表達式的值

>>>x = 7
>>>eval('3 * x')
21
解析:執行1個字符串表達式,並返回表達式的值

7)filter()

用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表

def is_old(n):
    return n % 2 == 1
newlist = filter(is_old,[1,2,3,4,5,6,7,8,9,10])
print newlist

8)isinstance()

判斷一個對象是否是一個已知的類型,類似type()

**區別**

type():不會認為子類是一種父類類型,不考慮繼承關系

isinstance():會認為子類是一種父類類型,考慮繼承關系

****

>>>a = 2
>>>isinstance(a,int) ----->True
>>>isinstance(a,(str,int.list))-------->True

class A:
    pass
class B(A):
    pass
    
>>>isinstance(A(),A)  
   return True
>>>ininstance(B(),A)
   return True
>>>type(B()) == A
   return False

9)reduce

對參數序列中的元素進行累積

>>>add = lambda x,y:x+y
>>>reduce(add,[1,2,3])
10
解析:add(x,y)函數必須是2個參數;reduce實際上就是對序列元素前兩個先進行相加,得到的值在與第三個值相加

10)reverse()

反向排序列表中的元素

11)sorted:

sorted[iterable[,cmp][,key][,reverse]]

對可叠代對象進行排序

**和sort區別**

sorted排序會返回一個新的列表,不會影響原有的列表

**

可叠代對象
>>>a = [5,7,6,3,4,1,2]
>>>b = sorted(a)  保留原列表
[1,2,3,4,5,6,7]
-------------------------------------------------------------------------------------------
cmp比較函數
>>>l = [('a',1),('b',2),('c',3),('d',4)]
>>>sorted(l,cmp=lambda x,y:cmp(x[1],y[1]))
[('a',1),('b',2),('c',3),('d',4)]
-------------------------------------------------------------------------------------------
降序
>>>students = [('john','A',15),('jane','B',12),('dave','B',10)]
>>>sorted(students,key=lanbda s:s[2],reverse=True)

【python深入4】內置函數