1. 程式人生 > >python(day16)內建函式,匿名函式

python(day16)內建函式,匿名函式

# add = lambda x,y:x+y
# print(add(1,2))

# dic={'k1':10,'k2':100,'k3':30}
# def func(key):
#     return dic[key]
# print(max(dic,key=func))   #根據返回值判斷最大值,返回值最大的那個引數是結果
# print(max(dic,key=lambda key:dic[key]))
# max([1,2,3,4,5,-6,-7],key=abs)

匿名函式基本格式:   func= lambda i : ret        # i 是形參,ret 是返回值

            func()        #呼叫匿名函式

#現有兩元組(('a'),('b')),(('c'),('d')),
# 請使用python中匿名函式生成列表[{'a':'c'},{'b':'d'}]
解決思路:首先用拉鍊ZIP方法先排好兩個元祖,然後聯想到有關的內建函式,再將字典變成列表型別輸出
# max min sorted filter map    !和匿名函式有關聯的5個內建函式考點
# 匿名函式 == 內建函式
# zip  拉鍊排序方法,內建函式之一
# ret = zip((('a'),('b')),(('c'),('d')))
# res = map(lambda tup:{tup[0]:tup[1]},ret)
# print(list(res))

# def multipliers():
#     return [lambda x:i*x for i in range(4)]
# print([m(2) for m in multipliers()])

  

 

 

 

 

 

 

內建函式:

1.reverse(注意,都是返回的貼帶起,如果想看內容,就要用for方法)

# reversed()
# l = [1,2,3,4,5]
# l.reverse()
# print(l)
# l = [1,2,3,4,5]
# l2 = reversed(l)
# print(l2)
# 保留原列表,返回一個反向的迭代器

2.slice,format

# l = (1,2,23,213,5612,342,43)
# sli = slice(1,5,2)
# print(l[sli]) # print(l[1:5:2]) # print(format('test', '<20')) # print(format('test', '>40')) # print(format('test', '^40'))

3.bytes,bytearray

#bytes 轉換成bytes型別
# 我拿到的是gbk編碼的,我想轉成utf-8編碼
# print(bytes('你好',encoding='GBK'))     # unicode轉換成GBK的bytes
# print(bytes('你好',encoding='utf-8'))   # unicode轉換成utf-8的bytes

# 網路程式設計 只能傳二進位制
# 照片和視訊也是以二進位制儲存
# html網頁爬取到的也是編碼
# b_array = bytearray('你好',encoding='utf-8')
# print(b_array)
# print(b_array[0])
# '\xe4\xbd\xa0\xe5\xa5\xbd'
# s1 = 'alexa'
# s2 = 'alexb'

# 切片 —— 位元組型別 不佔記憶體
# 位元組 —— 字串 佔記憶體
4.ord,unicode轉換為數字表示,chr,數字轉換為unicode表示

# print(ord('好'))
# print(ord('1'))
# print(chr(97))

5.repr,完全複製

# print('你好%r'%name)
# print(repr('1'))
# print(repr(1))

6.all,有一個false,則返回false,                 any有一個true,則返回true

# print(all(['a','',123]))                 
# print(all(['a',123]))
# print(all([0,123]))

# print(any(['',True,0,[]]))

7.5個超重要函式,zip(拉鍊) ,filter(篩選) , map(遍歷)  ,sort (在原列表排序), sorted(生成新列表), 

# l = [1,2,3,4,5]
# l2 = ['a','b','c','d']
# l3 = ('*','**',[1,2])
# d = {'k1':1,'k2':2}
# for i in zip(l,l2,l3,d):
#     print(i)
# from math import sqrt
# def func(num):
#     res = sqrt(num)
#     return res % 1 == 0
# ret = filter(func,range(1,101))
# for i in ret:
#     print(i)


# ret = map(abs,[1,-4,6,-8])
# print(ret)
# for i in ret:
#     print(i)


# filter 執行了filter之後的結果集合 <= 執行之前的個數
        #filter只管篩選,不會改變原來的值
# map 執行前後元素個數不變
      # 值可能發生改變

# l = [1,-4,6,5,-10]
# # l.sort(key = abs)   # 在原列表的基礎上進行排序
# # print(l)
#
# print(sorted(l,key=abs,reverse=True))      # 生成了一個新列表 不改變原列表 佔記憶體
# print(l)

# l = ['   ',[1,2],'hello world']
# new_l = sorted(l,key=len)
# print(new_l)