內置函數

一、
1、callable() : 可否調用
def func():
    pass
print(callable(a))       # False
print(callable(print))   # True
print(callable(func))    # True
2、三個查看方法
    Ctrl  +  左鍵單擊 :pycharm
    help:包含所有方法名 以及 它的使用方法 --- 不知道用法
    dir:只包含方法名 --- 想查看某方法是否在這個數據類型中
    print(dir(int))    ==   print(dir(5))    # 出來int的所有方法
3、
    想輸出(黃字藍底):願你們這場愛能避免麻煩
    print('\033[0;33;44m願你們這場愛能避免麻煩\033[0m')
    PS:注意使用';'分號分隔開的
4、函數的內置方法們
①基礎數據類型相關(38)
數據結構相關(24):
序列(13):
列表和元組2:list和tuple
相關內置函數2:reversed,slice
字符串9:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
數據集合(3):
字典1:dict
集合2:set,frozenset
相關內置函數(8):len,sorted,enumerate,all,any,zip,filter,map
數字相關(14):
數字—數據類型相關:**bool,**int,**float,complex
數字—進制轉換相關:bin,oct,hex
數字—數學運算:**min,**max,**sum,*abs,*divmod,*round,*pow
②迭代器/生成器相關(3)
③作用域相關(2)
locals()
globals()
④其他(12)
字符串類型代碼的執行(3): *evel   *exec  compile
輸入輸出(2):  **input     **print    
內存相關(2):  **hash     id
文件操作相關(1):   **open   
模塊相關(1):    _import_
幫助(1):    help
調用相關(1):    callable
查看內置屬性(1):   *dir
⑤反射相關(4):
⑥面向對象相關(9)
5、round:   print(round(3.14159,2))     # 3.14
6、pow:     print(pow(2,3,2))    2的3次方 取餘 2    # 0
7、sum:     print(sum([1,2,3,4,5,6),-2)      # 前面加起來  減 2
  print(sum(range(101)))         # sum接收可迭代對象     5050
8、min:      print(min([],default = 0))    若沒有 default 則報錯     # 0
  print(min([-9,2,23,59],key = abs))  # 輸出絕對值最小的數    # 2
9、max:        和min類似
10、divmid:   print(divmod(17,10))    #  (1,7)   商1,餘 7
11、input 和 print
①s = input('提示:')

print(1,2,sep=',')           # print('%s,%s'%(1,2))
print(1,2,3,4,5,sep='*')  # sep是指定多個要打印的內容之間的分隔符 ,默認空格
f = open('文件','w',encoding='utf-8')
print('abc\n',file=f)
print(2)
二、進度條:
import time
for i in range(2,101,2):      # 源代碼是從0 開始(加入顏色了之後不知道怎麼0%的時候顏色會覆蓋一下)
    time.sleep(0.3)              #  睡眠0.3,不然直接顯示,看不到效果
    i2 = i // 2                        # 打印多少個'*'    8/2 = 4
    if i == 100:                    # 等於100打印完成,回車換行
        p_str = '\r%s%% : \033[0;31;41m%s\033[0m\n'% (i,'*'*i2)
    else:                             # 不等於100直接在後面打印*
        p_str = '\r%s%% : \033[0;31;41m%s\033[0m'%(i,'*'*i2)
    print(p_str,end='',flush=True)           # 沒顏色的話是逐步打印 *
# print(self, *args, sep=' ', end='\n',flush=False)    # 源碼中end 默認換行;flush緩存,爲True的話拿到一條打印一條

三、不懂也不想懂的:難受
print(id(1))                                      # 1777295584
print(id(2))                                      # 1777295616
print(hash('sajghfj;eyrwodnvjnz,.jifupwk'))  #算法  # 1058870219305678952
print(hash(125342))                                      # 125342
print(hash((1,2,3,4)))                                      # 485696759010151909
數據的存儲和查找
模塊:hashlib
{'k':'v'}
[1,2,3,4,5,6,]

hash([1,2,3,4,5,6,])
hash 判斷一個數據類型是否可以hash
在一個程序執行的過程中,對同一個值hash的結果總是不變
多次執行,對同一個值的hash結果可能改變


四、
1、迭代器強轉換的三種方法:

print(list(ret))

next

for循環

2、

li = [3,4,2,5,7,1,5]

ret = reversed(li)      這兩個的區別:

print(ret)                    返回值不同:

print(list(ret))                    reversed:返回迭代器

                                        不改變原來的列表,生成一個新的序列迭代器

li.reverse()                         reverse:返回None

print(li)                               是在原本的列表的基礎上修改的

3、

ret  =  bytes('花不再香',encoding='utf-8')        :將中文轉換成bytes

print(ret.decode(encoding='utf-8'))                    :將十六進制轉換成中文  

修改的次數多,且字符串長的時候:

ret = bytearray('alex',encoding='utf-8')

print(id(ret))                    # ## 43715808

print(ret[0])                     # ## 97

ret[0] = 65

print(ret)                         # ## bytearrary(b'ALex')

print(id(ret))                    # ## 43715808 

ps: 對比較長的字符串做修改的時候,指定某一處進行修改,不會改變這個bytearry的

4、print(ord('a'))       # ## 97   顯示其ASCII碼
       print(chr(97))       # ## a     顯示ASCII碼對應的字符
5、print(repr(1))        # ## 1     
       print(repr('1'))       # ## 1        
6、print('name: %r' %('金老闆'))   # ## name: '金老闆'
      print('name: %s' %('金老闆'))   # ## name: 金老闆
7、enumerate:

li = ['筆記本','phone','Apple']

for i in enumerate(li):               # ##(0,'筆記本')

print(i)                                # ##(1,'phone')         

                                                # ##(2,'Apple')   

for i,j in enumerate(li,1):           # ## 1  '筆記本'

print(i,j)                                # ## 2  'phone'         

                                                  # ## 3  'Apple '   
8、all   與  any  (注意括號們)

print(all([1,2,3,0]))           # ## False

print(all([1,None,2]))        # ## False

print(all([1,2,'']))                # ## False

print(all([1,2,3,4,5]))           # ## True

print(any([True,None,False]))   # ## True

print(any((False,None)))           # ## False

9、filter:(過濾)     就是一個可迭代對象,想要一個子女的內容集,是從可迭代對象中篩選出來的

①
def is_odd(x):
if x % 2 == 0:
return True
ret = filter(is_odd,[1,4,6,7,9,12,17)
print(list(ret))             # ## [4,6,12]
② 去掉所有空內容和字符串中的空格
def func(x):
return x and x.strip()
li = ['test',None,'','str','    ','end']
ret = filter(func,li)
print(list(ret))          # ## ['test', 'str', 'end']
10、map(映射):

ret = map(abs,[-1,-5,6,-9])

print(list(ret))       # ## [1,5,6,9]

9/10:filter 和 map

參數很相近:一個函數名 + 可迭代對象

返回值相近:返回可迭代對象

區別:

filter 做篩選,結果還是原來就在可迭代對象中的項

map是對可迭代對象中的每一項做操作的,結果不一定是原來就在可迭代對象中的項

①有一個list, L = [1,2,3,4,5,6,7,8],我們要將f(x)=x^2作用於這個list上,那麼我們可以使用map函數處理

def func(x):
    return x*x
ret = map(func,[1,2,3,4,5,6,7,8])
print(list(ret))                   # [1, 4, 9, 16, 25, 36, 49, 64]
11、sort 和 sorted

sort 是直接修改原列表的順序,節省內存

sorted 是生成一個新列表,不改變原列表

key 的用法 666

print(sorted([-5,3,-4,2,-1],reverse=True))   # ##[3, 2, -1, -4, -5]

print(sorted([-5,3,-4,2,-1],key=abs))     # ##[-1, 2, 3, -4, -5]

按長度排序:

list2 = ['sunv',(1,2),'a',[1,2,3]]

print(sorted(list2,key=len,reverse=True))   # ## ['sunv', [1, 2, 3], (1, 2), 'a']

12、拉鍊函數

print(list(zip([0,1,2,3,4],[5,6,7,8],['a','b'])))    # ##  [(0, 5, 'a'), (1, 6, 'b')]


五、lambda

1、要輸出值最大鍵:

dic = {'k1':10,'k2':100,'k3':30}

# print(max(dic.values()))           # 100

# print(max(dic))                    # k3         # 不用 lambda 做不到

print(max(dic,key=lambda k:dic[k]))   # k2 

2、map、lambda

ret = map(lambda x:x*x,[1,2,3,4,5,6,7,8])

print(list(ret))

3、filter、lambda(找三位數)

ret = filter(lambda num:99<num<1000,[1,4,859,67,34])

print(list(ret))

4、面試一:

現有兩個元組(('a')('b')),(('c')('d'))

使用匿名函數生成列表[{'a':'c'},{'b':'d'}]

t1 = (('a'),('b'))

t2 = (('c'),('d'))

# print(dict(zip(t1,t2)))   # 自己想的(錯的,沒有用匿名函數)

①:

print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2)))) # [{'a':'c'}, {'b':'d'}]

②:

test = lambda t1,t2 : [{i,j} for i,j in zip(t1,t2)]

print(test(t1,t2))

③:print([{i,j} for i,j in zip(t1,t2)])

5、面試2,將列表推導式換成了,生成器表達式

def multipliers():
          return (lambda x:i*x for i in range(4))
print([m(2) for m in multipliers()])  # ## [0,2,4,6]	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章