python函數知識六 內置函數二、匿名函數與內置函數三(重要)

19.內置函數二

  1. abs():絕對值
lst = [1,2,-3,1,2,-5]
print([abs(i) for i in lst])
  1. enumerate(“可迭代對象”,”序號起始值”):枚舉獲取鍵和值,起始值默認為0
lst [1,2,-3,1,2,-5]
print([i for i in enumerate(lst)])
print(i for i in enumerate(lst,10))
  1. max():求最大值,放可迭代對象
  2. min():最小值
  3. sum(list,tuple,set):求和,可指定起始值
  4. range():範圍
  5. print(sep = “:”,end=”\t”):sep–>多個元素的連接符,end–>默認為\n
print(123,file = open('1.txt','w'))#輸出到文件內
  1. list:
print(list('alex'))#結果是迭代出來的
  1. dict:
print(dict(key = 1, a = 'alex'))#結果{'key':1,'a':'alex'}

#面試:定義
print(dic(((1,2),(2,3),(3,4))))

print(dict([i for i in enumerate(range(20),1)]))
  1. zip():拉鏈,按照最少的合併,按索引合併,字典是按鍵合併,與值無關
lst1 = [1,2,3,4,5]
lst2 = ['a','b','c','d','f']
lst3 = ["alex",'ewr',"你好",""]
lst4 = {'k1':1,'k2':2}
print(list(zip(lst1,lst2)))

print(dict(list(zip(lst1,lst2))))#面試
print(dict(zip(lst1,lst2)))

print(list(zip(lst1,lst2,lst3)))

print(list(zip(lst4,lst1)))
  1. dit():查看當前函數的方法
print(dir(list))
g = range(0,10)
from collections import Iterable,Iterator
print(isinstance(g,Iterable))#判斷是否是可迭代對象
print(isinstance(g,Iterator))#判斷是否是迭代器

20.匿名函數與內置函數三(重要)

重要的內置函數和匿名函數

1.匿名函數:

lambda –>定義函數(一行函數),x,y 形參 x+y 返回值,只能返回一個數據類型。形參可以不寫,返回值必須寫

匿名函數的名字叫做lambda

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

f = lambda x, y:(x,y)
print(f(1,2))
print(f.__name__())#函數名就叫做lambda

print(lambda x:x)#結果:內存地址
print((lambda x:x)(2))#調用函數

#面試1
print([lambda i:i*i for i in range(10)])#返回十次匿名函數的內存地址
lst = [lambda i:i*i for i in range(10)]
print(lst[2](2))
#解構
lst = []
for i in range(10):
    def func(i):
        return i*i
    lst.append(func)
print(lst[2](3))#結果 9

#2.不寫形參
lst = [lambda :i*i for i in range(10)]
print(lst[2]())
#解構
lst = []
for i in range(10):
    def func():
        return i*i
    lst.append(func)
print(lst[2]())#結果 81

#
lst = (lambda i:i*i for i in range(5))#報錯
print((lambda i:i*i for i in range(5)))#生成器的地址

#

2.內置函數三(重要)

  1. format()
print(format(13,">20"))#右對齊
print(format(13,"<20"))#左對齊
print(format(13,"^20"))#居中
print(format(13,"b"))#二進制

#進制,8位显示
print(format(13,"08b"))#二進制
print(format(13,"08d"))#十進制
print(format(13,"08o"))#八進制
print(format(13,"08x"))#十六進制
  1. filter(“函數”,”可迭代對象”):過濾,寫函數的時候,可指定過濾條件
lst = [1,2,3,4,5,6]
def func(s):
    return s>3
print(filter(func,lst))#返回對象內存地址
print(list(filter(func,lst)))#返回lst中>3的值   func就是定義的條件,lst是迭代對象
#用lambda
print(list(filter(lambda x:x>3,lst)))
  1. map():對象映射,對可迭代對象中的每個元素進行加工
print(map(lambda x:x+1,[1,2,3,4,8,5]))#返回地址
print(list(map(lambda x:x+1,[1,2,3,5,4,6])))#
  1. reversed():反轉,原數據沒變
  2. sorted():排序,key,指定排序規則–不用list轉換
s1 = "alex"
print(reversed(s1))#結果為內存地址
print(list(reversed(s1)))#結果:['x', 'e', 'l', 'a']

lst = [1,2,3,4,5]
lst.reverse()
print(s1)

lst1 = list(reversed(lst))
print(lst)
print(lst1)

lst = [1,2,36,4,8]
print(sorted(lst))
print(lst)#原數據不變
#降序
print(sorted(lst,reverse=Treu))
#key
dic = {'k1':1,'k2':3,'k3':56}
print(sorted(dic,key=lambda x:dic[x],reverse=True))
#key指定查找最大值時的規則
print(max([1,2,-33,5],key=abs))
  1. reduce():累計算,面試
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3]))

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *