''' 源碼分析 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)
int():整型python
str():字符串數組
bool():布爾緩存
set(): 集合函數
list() 將一個可迭代對象轉換成列表源碼分析
tuple() 將一個可迭代對象轉換成元組編碼
dict() 經過相應的方式建立字典。code
list l1 = list('abcd') print(l1) # ['a', 'b', 'c', 'd'] tu1 = tuple('abcd') print(tu1) # ('a', 'b', 'c', 'd')
i = -5 print(abs(i)) # 5
print(sum([1,2,3])) print(sum((1,2,3),100))
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的值進行比較)返回最小的值對應的鍵
將一個序列翻轉, 返回翻轉序列的迭代器 reversed 示例:對象
l = reversed('你好') # l 獲取到的是一個生成器 print(list(l)) ret = reversed([1, 4, 3, 7, 9]) print(list(ret)) # [9, 7, 3, 4, 1]
把字符串轉換成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) # 將字節轉換成字符串
函數用於將可迭代的對象做爲參數,將對象中對應的元素打包成一個個元組,ip
而後返回由這些元祖組成的內容,若是各個迭代器的元素個數不一致,則按照長度最短的返回
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)
排序函數
語法: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}]
篩選過濾
語法: 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}]
映射函數 語法: 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]
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保住了.
open ( "文件名","模式","編碼")
如迭代器的__iter__,__next__
等
執行字符串類型的代碼,並返回最終結果。
eval('2 + 2') # 4 n=81 eval("n + 4") # 85 eval('print(666)') # 666
執行字符串類型的代碼。
s = ''' for i in [1,2,3]: print(i) ''' exec(s)
獲取一個對象(可哈希對象: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 '''
函數用於查看函數或模塊用途的詳細說明。
print(help(list)) print(help(str.split))
:函數用於檢查一個對象是不是可調用的。若是返回True,object仍然可能調用失敗;但若是返回False,調用對象ojbect絕對不會成功。
name = 'alex' def func(): pass print(callable(name)) # False print(callable(func)) # True
函數用於將一個字符串或數字轉換爲整型。
print(int()) # 0 print(int('12')) # 12 print(int(3.6)) # 3 print(int('0100',base=2)) # 將2進制的 0100 轉化成十進制。結果爲 4
函數用於將整數和字符串轉換成浮點數。
函數用於建立一個值爲 real + imag * j 的複數或者轉化一個字符串或數爲複數。若是第一個參數爲字符串,則不須要指定第二個參數。。
print(float(3)) # 3.0 print(complex(1,2)) # (1+2j)
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'>
計算除數與被除數的結果,返回一個包含商和餘數的元組(a // b, a % b)。
保留浮點數的小數位數,默認保留整數。
求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取餘。
用於不一樣編碼之間的轉化。
# 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'))
# ord 輸入字符找該字符編碼的位置 # print(ord('a')) # print(ord('中')) # chr 輸入位置數字找出其對應的字符 # print(chr(97)) # print(chr(20013))
# %r 原封不動的寫出來 # name = 'taibai' # print('我叫%r'%name) # repr 原形畢露 print(repr('{"name":"alex"}')) print('{"name":"alex"}')
# all 可迭代對象中,全都是True纔是True # any 可迭代對象中,有一個True 就是True # print(all([1,2,True,0])) # print(any([1,'',0]))