python 常用的Python內置函數

數字相關函數
1、絕對值:abs(-1)
2、最大最小值:max([1,2,3])、min([1,2,3]),對序列進行操作
3、序列長度:len(‘abc’)、len([1,2,3])、len((1,2,3))
4、取模:divmod(5,2)//(2,1)得到一個元組
5、乘方:pow(2,3,4)//2**3/4
6、浮點數:round(3.1415926,2)//3.14 四捨五入

#取絕對值
print abs(-1)  

#最大最小值
list1 = [1,3,5]
print 'max is :%d'%max(list1)
print 'min is :%d'%min(list1)

#長度
print len(list1)

# help()查看函數幫助文檔
help(divmod)
print divmod(5,2)

help(pow)
print pow(2,3) #2**3/23次方/8
print pow(2,3,4) #2**3%4/0

help(round)
print round(3.1415926,2) #保留幾位小數

功能相關函數
1、函數是否可調用:callable(funcname),注意,funcname變量要定義過
2、類型判斷:isinstance(x,list/int)
3、比較:cmp(‘hello’,’hello’)
4、快速生成序列:(x)range([start,] stop[, step])

#1、函數是否可調用:callable(funcname),注意,funcname變量要定義過
callable(num)
#NameError: name 'num' is not defined

#callable 對象是一個變量,返回false
num  = 1
print callable(num)  #False
#http://www.pythontab.com/html/2013/hanshu_0125/169.html

#callable函數對象是divmod,返回Ture,代表函數可以調用
print callable(divmod) #Ture

# 2、類型判斷
 list1 = [1,3,5]
print isinstance(list1,list)  #True
print isinstance(list1,tuple)  #False

# 3、cmp(x,y)比較x與y的內容是否相等,
# 相等返回0,x小於y 返回-1,x大於y 返回1
print 'x等於y :%d'%cmp(1,1)  #x等於y :0
print 'x等於y :%d'%cmp('aaa','aaa')  #x等於y :0
print 'x小於y :%d'%cmp(1,2)  #x小於y :-1
print 'x大於y :%d'%cmp(2,1)  #x大於y :1
print cmp([1,2,3],[1,2,4])   #-1

# 4、生成序列,range(),xrange()
list2 =  range(1,11)
print type(list2),list2
#<type 'list'> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 5、xrange()不生成list
print type(xrange(1,11)),xrange(1,11) 
#<type 'xrange'> xrange(1, 11)
for i in xrange(1,11):
    print i

數據類型轉換函數
1、int(x)
2、long(x)
3、float(x)
4、complex(x) //複數
5、str(x)
6、list(x)
7、tuple(x) //元組
8、hex(x)
9、oct(x)
10、chr(x)//返回x對應的字符,如chr(65)返回‘A’
11、ord(x)//返回字符對應的ASC碼數字編號,如ord(‘A’)返回65

str1 = '123'
print type(int(str1)),int(str1)
print type(long(str1)),long(str1)
print type(float(str1)),float(str1)
print type(complex(str1)),complex(str1)

int1 = 123
print type(str(int1)),str(int1)
print type(list(str1)),list(str1)
print type(tuple(str1)),tuple(str1)

# 數字不同進制的轉換
print type(hex(int1)),hex(int1)
print type(oct(int1)),oct(int1)

# 返回ASCII碼對應的字符
print chr(65)
print chr(97)

# 返回字符對應的ASCII碼
print ord('A')
print ord('0')

字符串處理
1、首字母大寫:str.capitalize()
2、字符串替換:str.replace()
3、字符串切割:str.split()

nameStr = 'xiaoming'
print nameStr.capitalize()   #Xiaoming

help(nameStr.replace)
#S.replace(old, new[, count]) -> string

print nameStr.replace('m','l') #xiaoling
print nameStr.replace('ming','hong') #xiaohong
print nameStr.replace('i','x') #xxaomxng
print nameStr.replace('i','x',1) #xxaoming

help(nameStr.split)
# S.split([sep [,maxsplit]]) -> list of strings

ip = '192.168.2.1'
print ip.split('.')  #['192', '168', '2', '1']
print ip.split('.',2)  #['192', '168', '2.1']

序列處理函數
1、len()序列長度
2、max()序列中最大值
3、min()最小值
4、filter()過濾序列
5、zip()並行遍歷
6、map()並行遍歷,可接受一個function類型的參數
7、reduce()遞歸

help(filter)
#filter(function or None, sequence) -> list, tuple, or string

def is_even(x):
    if x%2==0:
        return True
print filter(is_even,range(1,11)) . #[2, 4, 6, 8, 10]
print filter(lambda x:x%2==0,range(1,11))#[2, 4, 6, 8, 10]

# zip(),並行遍歷
name=['xiaoming','xiaohong','xiaofang','xiaogang']
age=[19,20,21,22]
city=['Beijing','Shanghai','Shenzhen','Hangzhou']
print zip(name,age,city)
#[('xiaoming', 19, 'Beijing'), ('xiaohong', 20, 'Shanghai'), ('xiaofang', 21, 'Shenzhen'), ('xiaogang', 22, 'Hangzhou')]

# 如何序列的長度不同
name=['xiaoming','xiaohong','xiaofang','xiaogang']
age=[19,20,21]
city=['Beijing','Shanghai','Shenzhen','Hangzhou']
print zip(name,age,city)
#[('xiaoming', 19, 'Beijing'), ('xiaohong', 20, 'Shanghai'), ('xiaofang', 21, 'Shenzhen')]元素冗餘的不能匹配的不操作

# map:並行遍歷,可接受一個function類型的參數
# map缺少元素補全。
print map(None,name,age,city)
#[('xiaoming', 19, 'Beijing'), ('xiaohong', 20, 'Shanghai'), ('xiaofang', 21, 'Shenzhen'), ('xiaogang', None, 'Hangzhou')]
#缺少元素,默認用None補齊

gender=['male','female']
print map(None,name,age,city)
#[('xiaoming', 19, 'Beijing'), ('xiaohong', 20, 'Shanghai'), ('xiaofang', 21, 'Shenzhen'), ('xiaogang', None, 'Hangzhou')]

a=[1,3,5]
b=[2,4,6]
print map(None,a,b)  #[(1, 2), (3, 4), (5, 6)]

print map(lambda x,y:x*y,a,b) #[2, 12, 30]匿名函數

# reduce()歸併
print reduce(lambda x, y: x + y, range(1,101))#5050從1加到100

寫一個函數,用遞歸的方法實現快速排序,按照升序排列
1. 快速排序就是選定一個標誌位,我們把它叫做flag,
把小於flag的放在它的左邊,把大於flag的放在它的右邊,這樣就以flag的分界,
把原來的list分爲了兩個子list : list1 和 list2。
2. 按照上述方法,在list1 和 list2中再分別選flag,將list2 和 list2 分別拆成兩個list,依次類推
3. 直到n = 1,即每個子list都只有一個元素 整個過程 : n/2x = 1 x = log2n

# 練習
# 寫一個函數,實現冒泡排序,按照升序排列

def bubble_sort(aList = []):
    if type(aList).__name__=='tuple':
        aList = list(aList)
    if type(aList).__name__=='list':
        if len(aList) <=1:
            return aList
        else:
            for i in range(0,len(aList)-1):
                for j in range(0,len(aList)-i-1):
                    if aList[j]>aList[j+1]:
                        aList[j], aList[j + 1] = aList[j + 1],aList[j]
    return aList

list1 = [20,10,50,30,90]
tuple1 = (20,10,50,30,90)
print bubble_sort(list1)
print bubble_sort(tuple1)

def quick_sort(aList = []):
    if len(aList)<=1:
        return aList
    else:
        flag = aList[0] #任意選一個值作爲flag
        smallerList = [] #存放比flag小的值
        biggerList = [] #存放比flag大的值
        flags = []
        for i in aList:
            if i<flag:
                smallerList.append(i)
            elif i>flag:
                biggerList.append(i)
            else:
                flags.append(flag)

        # 遞歸調用
        smallerList = quick_sort(smallerList)
        biggerList = quick_sort(biggerList)

        return smallerList+flags+biggerList

list2sort = [30,20,10,90,80,50]
print quick_sort(list2sort)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章