python 基礎 學習 內置函數

內置函數

     

例:如果返回數字的絕對值 ,寫函數是非常不方便的
[root@zabbix tools]# python fa.py 
10
[root@zabbix tools]# cat fa.py 
#!/usr/bin/python
def a(x):
    if x < 0 :
        return -x 
    return x 
n = a(-10)
print n

 #幫助查看#

>>> help(len)

用法: help(函數名)

 abs()  返回絕對值

>>> abs(-10)
10

 max()返回最大值 , min()返回最小值

>>> l=[1,4,7,12,555,66,]
>>> min(l)
1
>>> max(l)
555

len() 獲取字符串長度

>>> s = 'konglingchao'
>>> len(s)
12

 divmod() 求商,求餘 用法:divmod(除數,被除數)

>>> divmod(10,2)
(5, 0)

pow() 次方運算  用法: pow(數1,數2,/(數3))  數3可有可無

>>> pow(3,3)
27
>>> pow(3,3,2)
1

round()返回浮點數

>>> round(1112)
1112.0

callable()測試函數是否被定義

>>> callable(min)
True                              #函數定義返回True
>>> callable(f)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'f' is not defined    #函數未被定義
>>> f=100                 #f是一個變量
>>> callable(f)
False                           #返回True

isinstance()

>>> print l
[1, 4, 7, 12, 555, 66]
>>> print f
<function f at 0x1a1e320>
>>> type(f)
<type 'function'>
>>> type(l)
<type 'list'> 
>>> if type(l) ==type([]):
...     print 'ok'
... 
ok      #判斷是否爲列表
使用isinstance 判斷某一個對象類型
>>> isinstance(l,int)
False
>>> isinstance(l,str)
False
>>> isinstance(l,list)
True

cmp ()字符串比較

>>> cmp("7","7")
0
>>> cmp("7","m")
-1
>>> cmp("7","6")
1

range()快速生成序列

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

xrange()   可以 理解爲對象,效率比range高

>>> x = xrange(10)
>>> print xxrange(10)

數據轉換類型的函數:

int()  整數

long() 長整形

float() 浮點型

complex() 複數型

str()

list()

tuple()


>>> L=[1,2,3,4]
>>> tuple(l)
(1, 4, 7, 12, 555, 66)

注意: 數據轉換要有選擇性的轉換

>>> s='hello'
>>> int(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'hello'
>>> s='123'
>>> type(s)
<type 'str'>
>>> int(s)
123

string 函數 :功能只限於對字符串的操作

#查看幫助要 加上 函數的類別:>>> help(str.replace) 

  str.capitalize()  :首字母大寫

>>> s='hello'
>>> str.capitalize(s)
'Hello'
>>> s
'hello word'
>>> s.capitalize()  #s是字符串裏的對象,s調用capitalize函數
'Hello word'

  str.replace() :替換,(可以指定替換次數)

>>> s.replace('hello','good')
'good word'
>>> s
'hello word'
#這裏的good word 只是一個返回值,並沒有將數據直接改變
>>> ss='12121212121212'
>>> ss.replace('1','xxxxx')
'xxxxx2xxxxx2xxxxx2xxxxx2xxxxx2xxxxx2xxxxx2'
>>> ss.replace('1','xxxxx',1)   #指定替換的次數
'xxxxx2121212121212'

  str.split() :切割  str.split(“參數1:切割服”,“參數2=切割次數”)

>>> ip="192.168.1.2"
>>> ip.split('.')
['192', '168', '1', '2']
>>> ip.split('.',2)
['192', '168', '1.2']

#######################

通過導入模塊調用方法

>>> import string 
>>> help(string.replace)
>>> s
'hello word'
>>> string.replace(s,'hello','good')
'good word'

#####################################

序列處理函數

len()

max()

min()

#使用序列函數求數字的長度是無法使用的!!!!!

>>> len(123)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
>>>

filter (參數1:函數,參數2:序列)

Help on built-in function filter in module __builtin__:
filter(...)
    filter(function or None, sequence) -> list, tuple, or string
              #函數    或者 #空   序列
    Return those items of sequence for which function(item) is true.  If
    function is None, return the items that are true.  If sequence is a tuple
    or string, return the same type, else return a list.

範例:

>>> def f(x):
...     if x>5:
...         return True
... 
>>> f(10)
True
>>> f(3)
>>> l=range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> filter(f,l)
[6, 7, 8, 9]
# f 函數作用於列表l

zip、map()列表遍歷

>>> name=['milo','zou','tom']
>>> age=[20,30,40]
>>> tel=['133','144','155']
>>> zip(name,age,tel)
[('milo', 20, '133'), ('zou', 30, '144'), ('tom', 40, '155')]
#並行遍歷
>>> map(None,name,age,tel)
[('milo', 20, '133'), ('zou', 30, '144'), ('tom', 40, '155')]
>>> test=['a','b']
#如果其中一個列表的值少於其它列表,它會取最短的列表進行遍歷;
>>> zip(name,age,tel,test)
[('milo', 20, '133', 'a'), ('zou', 30, '144', 'b')]
如果換爲map遍歷,它會將某一列表缺少的值用None填充。
>>> map(None,name,age,tel,test)
[('milo', 20, '133', 'a'), ('zou', 30, '144', 'b'), ('tom', 40, '155', None)]
#此處的None也可以變爲函數,把後面的值進行運算。
>>> a=[1,4,6,]
>>> b=[7,8,9]
>>> map(None,a,b)
[(1, 7), (4, 8), (6, 9)]
>>> def mf(x,y):
...     print x*y
... 
>>> map(mf,a,b)
7
32
54
[None, None, None]

reduce()遞歸 運算

>>> def f(x,y):
...     return x+y
... 
>>> l=(range(1,101))
>>> reduce(f,l)
5050
或者使用匿名函數
>>> reduce(lambda x,y:x+y,l)
5050



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