1. 程式人生 > >python常用內建函式

python常用內建函式

內建函式(***)

''' 原始碼分析
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    file:  預設是輸出到螢幕,如果設定為檔案控制代碼,輸出到檔案
    sep:   列印多個值之間的分隔符,預設為空格
    end:   每一次列印的結尾,預設為換行符
    flush: 立即把內容輸出到流檔案,不作快取
    """
'''

print(111,222,333,sep='*')  # 111*222*333

print(111,end='')
print(222)  #兩行的結果 111222

f = open('log','w',encoding='utf-8')
print('寫入檔案',fle=f,flush=True)

2.int, str,bool,set,list,tupie,dict

int():整型

str():字串

bool():布林

set(): 集合

list() 將一個可迭代物件轉換成列表

tuple() 將一個可迭代物件轉換成元組

dict() 通過相應的方式建立字典。

list
l1 = list('abcd')
print(l1)  # ['a', 'b', 'c', 'd']
tu1 = tuple('abcd')
print(tu1)  # ('a', 'b', 'c', 'd')

3.abs() 返回絕對值

i = -5
print(abs(i))  # 5

4.sum() 求和

print(sum([1,2,3]))
print(sum((1,2,3),100))

5.min() 求最小值

print(min([1,2,3]))  # 返回此序列最小值

ret = min([1,2,-5,],key=abs)  # 按照絕對值的大小,返回此序列最小值
print(ret)
# 加key是可以加函式名,min自動會獲取傳入函式中的引數的每個元素,然後通過你設定的返回值比較大小,返回最小的傳入的那個引數。
print(min(1,2,-5,6,-3,key=lambda x:abs(x)))  # 可以設定很多引數比較大小
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))

# x為dic的key,lambda的返回值(即dic的值進行比較)返回最小的值對應的鍵

max() 最大值與最小值用法相同。

6.reversed()

將一個序列翻轉, 返回翻轉序列的迭代器 reversed 示例:

l = reversed('你好')  # l 獲取到的是一個生成器
print(list(l))
ret = reversed([1, 4, 3, 7, 9])
print(list(ret))  # [9, 7, 3, 4, 1]

7.bytes()轉成位元組

把字串轉換成bytes型別

s = '你好太白'
bs = s.encode('utf-8')
print(bs)
結果:b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7'

s1 = bs.decode('utf-8')
print(s1)
結果: 你好太白


s = '你好'
bs = bytes(s,encoding='utf-8')
print(bs)
# 將字串轉換成位元組

bs1 = str(bs,encoding='utf-8')
print(bs1)
# 將位元組轉換成字串

8.zip() 拉鍊方法

函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,

然後返回由這些元祖組成的內容,如果各個迭代器的元素個數不一致,則按照長度最短的返回

lst1 = [1,2,3]

lst2 = ['a','b','c','d']

lst3 = (11,12,13,14,15)

for i in zip(lst1,lst2,lst3):

    print(i)

結果:

(1, 'a', 11)

(2, 'b', 12)

(3, 'c', 13) 

9.sorted排序

排序函式

語法:sorted(iterable,key=None,reverse=False)

iterable : 可迭代物件

key: 排序規則(排序函式),在sorted內部會將可迭代物件中的每一個元素傳遞給這個函式的引數.根據函式運算的結果進行排序

reverse :是否是倒敘,True 倒敘 False 正序

lst = [1,3,2,5,4]
lst2 = sorted(lst)
print(lst)    #原列表不會改變
print(lst2)   #返回的新列表是經過排序的
 
 
lst3 = sorted(lst,reverse=True)
print(lst3)   #倒敘
 
結果:
[1, 3, 2, 5, 4]
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

字典使用sorted排序

dic = {1:'a',3:'c',2:'b'}
print(sorted(dic))   # 字典排序返回的就是排序後的key
 
結果:
[1,2,3]




和函式組合使用

# 定義一個列表,然後根據一元素的長度排序
lst = ['天龍八部','西遊記','紅樓夢','三國演義']
 
# 計算字串的長度
def func(s):
    return len(s)
print(sorted(lst,key=func))
 
# 結果:
# ['西遊記', '紅樓夢', '天龍八部', '三國演義']


和lambda組合使用

lst = ['天龍八部','西遊記','紅樓夢','三國演義']
 
print(sorted(lst,key=lambda s:len(s)))
 
結果:
['西遊記', '紅樓夢', '天龍八部', '三國演義']
 
 
lst = [{'id':1,'name':'alex','age':18},
    {'id':2,'name':'wusir','age':17},
    {'id':3,'name':'taibai','age':16},]
 
# 按照年齡對學生資訊進行排序
 
print(sorted(lst,key=lambda e:e['age']))
 
結果:
[{'id': 3, 'name': 'taibai', 'age': 16}, {'id': 2, 'name': 'wusir', 'age': 17}, {'id': 1, 'name': 'alex', 'age': 18}]

10.filter篩選過濾

篩選過濾

語法: filter(function,iterable)

function: 用來篩選的函式,在filter中會自動的把iterable中的元素傳遞給function,然後根據function返回的True或者False來判斷是否保留此項資料

iterable:可迭代物件

lst = [{'id':1,'name':'alex','age':18},
        {'id':1,'name':'wusir','age':17},
        {'id':1,'name':'taibai','age':16},]
 
ls = filter(lambda e:e['age'] > 16,lst)
 
print(list(ls))
 
結果:
[{'id': 1, 'name': 'alex', 'age': 18},
 {'id': 1, 'name': 'wusir', 'age': 17}]

11.map每個值進行對映

對映函式

語法: map(function,iterable) 可以對可迭代物件中的每一個元素進對映,分別取執行function

計算列表中每個元素的平方,返回新列表

lst = [1,2,3,4,5]

def func(s):

    return  s*s

mp = map(func,lst)

print(mp)

print(list(mp))


改寫成lambda
lst = [1,2,3,4,5]
print(list(map(lambda s:s*s,lst)))
計算兩個列表中相同位置的資料的和

lst1 = [1, 2, 3, 4, 5]

lst2 = [2, 4, 6, 8, 10]

print(list(map(lambda x, y: x+y, lst1, lst2)))

結果:

[3, 6, 9, 12, 15]

12.reduce可用來階乘

from functools import reduce
def func(x,y):
    return x + y

# reduce 的使用方式:
# reduce(函式名,可迭代物件)  # 這兩個引數必須都要有,缺一個不行

ret = reduce(func,[3,4,5,6,7])
print(ret)  # 結果 25
reduce的作用是先把列表中的前倆個元素取出計算出一個值然後臨時儲存著,
接下來用這個臨時儲存的值和列表中第三個元素進行計算,求出一個新的值將最開始
臨時儲存的值覆蓋掉,然後在用這個新的臨時值和列表中第四個元素計算.依次類推

注意:我們放進去的可迭代物件沒有更改
以上這個例子我們使用sum就可以完全的實現了.我現在有[1,2,3,4]想讓列表中的數變成1234,就要用到reduce了.
普通函式版
from functools import reduce

def func(x,y):

    return x * 10 + y
    # 第一次的時候 x是1 y是2  x乘以10就是10,然後加上y也就是2最終結果是12然後臨時儲存起來了
    # 第二次的時候x是臨時儲存的值12 x乘以10就是 120 然後加上y也就是3最終結果是123臨時儲存起來了
    # 第三次的時候x是臨時儲存的值123 x乘以10就是 1230 然後加上y也就是4最終結果是1234然後返回了

l = reduce(func,[1,2,3,4])
print(l)


匿名函式版
l = reduce(lambda x,y:x*10+y,[1,2,3,4])
print(l)

在Python2.x版本中recude是直接 import就可以的, Python3.x版本中需要從functools這個包中匯入

龜叔本打算將 lambda 和 reduce 都從全域性名字空間都移除, 輿論說龜叔不喜歡lambda 和 reduce

最後lambda沒刪除是因為和一個人寫信寫了好多封,進行交流然後把lambda保住了.

13.open()開啟檔案

open ( "檔名","模式","編碼")

14.enumerate()列舉

15.range()生成類列表

16.dir()檢視所有操作

如迭代器的__iter__,__next__

內建函式(**)

1.eval:

執行字串型別的程式碼,並返回最終結果。

eval('2 + 2')  # 4
n=81
eval("n + 4")  # 85
eval('print(666)')  # 666

2.exec:

執行字串型別的程式碼。

s = '''
for i in [1,2,3]:
    print(i)
'''
exec(s)

3.hash:

獲取一個物件(可雜湊物件:int,str,Bool,tuple)的雜湊值。

print(hash(12322))
print(hash('123'))
print(hash('arg'))
print(hash('alex'))
print(hash(True))
print(hash(False))
print(hash((1,2,3)))

'''
-2996001552409009098
-4637515981888139739
1
2528502973977326415
'''

4.help:

函式用於檢視函式或模組用途的詳細說明。

print(help(list))
print(help(str.split))

5.callable

:函式用於檢查一個物件是否是可呼叫的。如果返回True,object仍然可能呼叫失敗;但如果返回False,呼叫物件ojbect絕對不會成功。

name = 'alex'
def func():
    pass
print(callable(name))  # False
print(callable(func))  # True

6.int:

函式用於將一個字串或數字轉換為整型。

print(int())  # 0
print(int('12'))  # 12
print(int(3.6))  # 3
print(int('0100',base=2))  # 將2進位制的 0100 轉化成十進位制。結果為 4

7.float:

函式用於將整數和字串轉換成浮點數。

8.complex:

函式用於建立一個值為 real + imag * j 的複數或者轉化一個字串或數為複數。如果第一個引數為字串,則不需要指定第二個引數。。

print(float(3))  # 3.0
print(complex(1,2))  # (1+2j)

9.bin:將十進位制轉換成二進位制並返回。

10.oct:將十進位制轉化成八進位制字串並返回。

11.hex:將十進位制轉化成十六進位制字串並返回。

print(bin(10),type(bin(10)))  # 0b1010 <class 'str'>
print(oct(10),type(oct(10)))  # 0o12 <class 'str'>
print(hex(10),type(hex(10)))  # 0xa <class 'str'>

12.divmod:

計算除數與被除數的結果,返回一個包含商和餘數的元組(a // b, a % b)。

13.round:

保留浮點數的小數位數,預設保留整數。

14.pow:

x**y次冪。(三個引數為`**y的結果對z取餘)

print(divmod(7,2))  # (3, 1)
print(round(7/3,2))  # 2.33
print(round(7/3))  # 2
print(round(3.32567,3))  # 3.326
print(pow(2,3))  # 兩個引數為2**3次冪
print(pow(2,3,3))  # 三個引數為2**3次冪,對3取餘。

15.bytes:

用於不同編碼之間的轉化。

# s = '你好'
# bs = s.encode('utf-8')
# print(bs)
# s1 = bs.decode('utf-8')
# print(s1)
# bs = bytes(s,encoding='utf-8')
# print(bs)
# b = '你好'.encode('gbk')
# b1 = b.decode('gbk')
# print(b1.encode('utf-8'))

16.ord:輸入字元找該字元編碼的位置

17.chr:輸入位置數字找出其對應的字元

# ord 輸入字元找該字元編碼的位置
# print(ord('a'))
# print(ord('中'))

# chr 輸入位置數字找出其對應的字元
# print(chr(97))
# print(chr(20013))

18.repr:返回一個物件的string形式(原形畢露)。

# %r  原封不動的寫出來
# name = 'taibai'
# print('我叫%r'%name)

# repr 原形畢露
print(repr('{"name":"alex"}'))
print('{"name":"alex"}')

19.all:可迭代物件中,全都是True才是True

20.any:可迭代物件中,有一個True 就是True

# all  可迭代物件中,全都是True才是True
# any  可迭代物件中,有一個True 就是True
# print(all([1,2,True,0]))
# print(any([1,'',0]))