內置函數做業:html
#1,默寫map和filter: def pow(x): return x*x l = [1,2,3,4,5] print(map(pow,l)) print(list(map(pow,l))) def is_odd(x): return x%2==1 l = [1,2,3,4,5] print(list(filter(is_odd,l))) #2,整理內置函數的思惟導圖,和博客,標註紅色和黃色的必須都會 # 3.用map來處理字符串列表,把列表中全部人都變成sb,比方alex_sb name = ['alex','wupeiqi','yuanhao','nezha'] ret = map(lambda x:x+'_sb',name) for i in ret: print(i) print(i) #結果爲 'nezha_sb'由於for循環運行完了,i對應最後一個值 print(list(ret)) #結果爲[],由於ret做爲一個迭代器,此時已經被for循環取完值了,已經取不到值了,故爲空 # 4.用filter函數處理數字列表,將列表中全部的偶數篩選出來 num = [1,3,5,6,7,8] ret = list(filter(lambda x:x%2==0,num)) print(ret) # 5.隨意寫一個20行以上的文件 # 運行程序,先將內容讀到內存中,用列表存儲。 # 接收用戶輸入頁碼,每頁5條,僅輸出當頁的內容 # with open('somewhere',encoding='utf-8') as f: # data = f.readlines() # pages,mod = divmod(len(data),5) # page_num = int(input('你想看第幾頁:')) # if mod: # pages +=1 # if page_num > pages or page_num < 0: # print('input wrong page') # elif page_num == pages and mod != 0: # for i in mod: # print(data[(page_num-1)*5+i].strip()) # else: # for i in range(5): # print(data[(page_num - 1) * 5 + i].strip()) # 6.以下,每一個小字典的name對應股票名字,shares對應多少股,price對應股票的價格 portfolio = [ {'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75}, {'name': 'YHOO', 'shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65} ] # 6.1.計算購買每支股票的總價 ret = map(lambda dic:{dic['name']:round(dic['shares']*dic['price'],2)},portfolio) print(list(ret)) # 6.2.用filter過濾出,單價大於100的股票有哪些 res = filter(lambda dic:dic['price']>100,portfolio) print(list(res))
Python中應該使用%仍是format來格式化字符串?python
內置函數補充:緩存
1,和做用域相關的: locals():以字典形式返回本地全部的局部變量 若是是在函數內部打印,那麼函數內部全部的變量就會以 key value的形式打印出來
golbals():以字典形式返回全局全部的變量
2,迭代器/生成器相關的: range() iter() next()
3.其餘12個
dir() 查看內置屬性
callable() 只要能 後面加括號的都能調用,好比print,golbals, a = 1,此處a就不能調用
help() 相似dir,查看方法名字及用法 import import time 至關於 time = __import('time')_
oper() 返回文件句柄
id() 返回內存地址
hash() 對於可哈希的數據類型,轉換爲哈希值,數字的哈希值是它自己, 列表,字典這種可變的沒哈希值 對於相同可hash數據的hash值在一次程序的執行過程當中老是不變的,並且它的哈希值固定那麼長 因此對於一些很長的字符串,能夠替換爲它的哈希值 字典的尋址方式,把key的哈希值返回的內存地址,讓value指向它,
input()
print()
print('咱們的祖國是花園',end='')
print('咱們的祖國是花園',end='') #默認結尾是\n,如今讓結尾爲空,
print(1,2,3,4,sep='|') #默認sep是空格,如今讓sep是| 打印出來爲 1|2|3|4
f = open('file','w') print('aaaa',file=f) f.close() >>>>>>>>>>>則此時print不輸出到屏幕,會寫入到 file這個文件裏 #打印進度條
flush:當即把內容輸出到流文件,不作緩存
eval() eval('1+2+3+4') 輸出10 有返回值
exec() eval('1+2+3+4') 輸出None 由於它沒有返回值,執行了沒結果 eval和exec均可以執行字符串類型的代碼,可是eval有返回值,exec沒有 注意!!eval謹慎使用,只能用在你明確知道你要執行的代碼是什麼, 或者實在沒辦法,用了比較方便。由於不安全,很容易被攻擊 只要攻擊者修改你要eval的內容,程序就會崩潰
eval:適合有結果的簡單運算 exec: 簡單流程控制 code = for i in range(10): print(i*'*') ''' exec(code)
compile()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
` code1 = 'for i in range(0,10): print (i)' compile1 = compile(code1,'','exec') exec(compile1) code2 = '1 + 2 + 3 + 4' compile2 = compile(code2,'','eval') print(eval(compile2)) code3 = 'name = input("please input your name:")' compile3 = compile(code3,'','single') exec(compile3) #執行時顯示交互命令,提示輸入 print(name) name #執行後name變量有值 "'pythoner'" compile()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
divmod(數1,數2) 除餘
round(float,精確位數) 精確值
pow(數1,數2,數3) 數1的數2次方 冪運算 , 數3是取餘,默認爲空
sum(iterable,start) start([1,2],10) 輸出13 從10開始,加上iterable裏的和
min(1,2,3,-4,key=abs) 能夠加方法 輸出爲1
max(1,2,3,-4,key=abs) 能夠加方法 輸出爲-4 由於abs爲絕對值,原值爲-4
繼樓上的內置函數補充 reversed(): l = [1,2,3,4,5] 用l.reverse()會把原列表反轉 l2 = reversed(1) 保留原列表,返回一個反向的迭代器 slice: sli = slice(1,5,2),,, l[sli] == l[1:5:2] bytes 轉換成bytes類型 >>> bytes('你好',encoding='utf-8') b'\xe4\xbd\xa0\xe5\xa5\xbd' bytearray:能夠修改字符串,可是前提要知道字符串的每一個字符對應的索引,即列表的index 經過修改二進制字符,達到節省內存的做用 ord('好') #22909 轉換Unicode爲數字 ord('a') #97 chr(22909) #'好' 轉換數字爲unicode ascii 用法同ord,不過 只要是ASCII碼中的內容,就打印出來,不是就轉換成\u repr(): print(repr(1)) 結果爲1 print(repr('1')) 結果爲 '1' 把數據類型打印出來 '你好%r'%name 結果同樣,此處%r就是用到了repr filter(func,iterable) 注意此處func是內存地址 #返回爲一個iterator def is_odd(x): return x%2==1 ret = filter(is_odd,[1,4,2,453,9,6,8]) for i in ret: print(i) >>>1,453,9 至關於列表推導式: [i for i in [1,4,2,453,9,6,8] if i%2==1] map() Python中的map函數應用於每個可迭代的項,返回的是一個結果list。 若是有其餘的可迭代參數傳進來, map函數則會把每個參數都以相應的處理函數進行迭代處理。 map()函數接收兩個參數,一個是函數,一個是序列, map將傳入的函數依次做用到序列的每一個元素,並把結果做爲新的list返回。 有一個list, L = [1,2,3,4,5,6,7,8], 咱們要將f(x)=x^2做用於這個list上, 那麼咱們可使用map函數處理。 L = [1,2,3,4,] def pow2(x): return x*x map(pow2,L) #>>>>[1, 4, 9, 16] sorted(): print(sorted(l,key=abs,reverse=True)) # 生成了一個新列表 不改變原列表 佔內存 print(l) # list.sort() 是在原列表上排序 l = [' ',[1,2],'hello world'] new_l = sorted(l,key=len) print(new_l)