免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
生成器 推導(dǎo)式 內(nèi)置函數(shù)

今日總結(jié)

  1. 生成器

    生成器的本質(zhì)就是一個迭代器

    生成器和迭代器的區(qū)別:

    ? 生成器是 python 自帶的

    ? 生成器是程序員寫的

  2. 生成器

  • 節(jié)省空間-------惰性機(jī)制
  • 不能逆行
  • 一次性
  • 一個 next 對應(yīng)一個 yield
  • yield 能夠返回內(nèi)容,還能夠返回多次
  • yield 能夠臨時停止循環(huán)
  • yield 能夠記錄執(zhí)行的位置
  • yield from —— 將一個可迭代對象的元素逐個返回
  1. 定義一個生成器

    基于函數(shù)

    函數(shù)體中存在 yield 就是一個生成器

    函數(shù)名 ( ) 就是產(chǎn)生一個生成器

推導(dǎo)式

list : [ ] [ 變量(加工后的變量) for 循環(huán) 加工條件]

dic : {} {鍵 : 值 for 循環(huán) 加工條件}

set : { } {變量 (加工后的變量) for 循環(huán) 加工條件 }

生成迭代器 : ( 變量 (加工后的變量) for 循環(huán) 加工條件)

內(nèi)置函數(shù)

生成器

迭代器:python 中內(nèi)置的一種節(jié)省空間的工具

生成器的本質(zhì)是一個迭代器

迭代器和生成器額區(qū)別 : 一個是 python 自帶的,一個是程序員自己寫的

def func():    if 3 > 2:        yield "你好"    if 4 > 2:        yield "我好"    yield "大家好"g = func()print(g.__next__())print(g.__next__())print(g.__next__())#你好我好大家好下面這樣的結(jié)果也是一樣的def func():    if 3 > 2:        yield "你好"    if 4 > 2:        yield "我好"    yield "大家好"g = func()for i in g:    print(i)
# for 循環(huán)的本質(zhì)while True:    try:        print(g.__next__())    except StopIteration :        break
def foo():    for i in range(10):        pass        yield i    count = 1    while True:        yield count        count  = 1g = foo()print(next(g))print(next(g))print(next(g))# 或者for i in g      print(i)
這里是新的坑def foo():    for i in range(10):        pass        yield i    count = 1    while True:        yield count        count  = 1print(foo().__next__())print(foo().__next__())    #記住這個是調(diào)用新的生成器#00
send()   只是了解def func():    a = yield "是send"    print(a)    yield "你好"g = func()print(g.send(None))  #send  第一次只能是 Noneprint(g.send(123))

生成器應(yīng)用場景

def func():    lst = []    for i in range(1000000):        lst.append(i)    return lstprint(func())   #這個結(jié)果實(shí)在是太強(qiáng)大了,雞蛋太多  所以找只雞 想吃就下一個所以參考下面的代碼def func():    for i in range(100000):        yield ig = func()for i in range(50):     #想吃幾個拿幾個    print(next(g))
def func():    lst1 = ["牛肉羊","雞蛋羹","玉米","火腿腸","米飯","拉面"]    for i in lst1:        yield ig = func()print(next(g))print(next(g))#牛肉羊雞蛋羹
def func():    lst1 = ["牛肉羊","雞蛋羹","玉米","火腿腸","米飯","拉面"]    lst2 = ["小浣熊","蘋果","梨子","桃子","西瓜","芒果"]    yield from lst1    yield from lst2g = func()print(next(g))print(next(g))結(jié)果牛肉羊雞蛋羹
def func():    lst1 = ["牛肉羊","雞蛋羹","玉米","火腿腸","米飯","拉面"]    lst2 = ["小浣熊","蘋果","梨子","桃子","西瓜","芒果"]    yield from lst1    yield from lst2g = func()print(next(g))print(next(g))             #是先走完 lst1   然后再走 lst2for i in g :    #結(jié)果牛肉羊雞蛋羹玉米火腿腸米飯拉面小浣熊蘋果梨子桃子西瓜芒果

生成器總結(jié):

  1. 在函數(shù)中將return 改寫成yield 就是一個生成器
  2. yield 會記錄執(zhí)行位置
  3. return 和 yield 都是返回
  4. return 可以寫多個但是只執(zhí)行一次,yield 可以寫多個,還可以返回多次
  5. 一個__next__對應(yīng)一個 yield
  6. 生成器可以利用 for 循環(huán)獲取值
  7. yield from—— 將可迭代元素逐個返回
  8. 在函數(shù)內(nèi)部,能將 for 循環(huán)和 while 循環(huán)臨時暫停

推導(dǎo)式

list  推導(dǎo)式[變量 for i in range(20)]lst = []for i in range(20):    lst.append(i)print(lst)         為了簡潔代碼  有了以下的操作print(list(i for i in range(20)))
篩選模式[變量(加工后的變量) for 循環(huán)  加工方式]lst = []for i in range(20):    if i % 2 == 0:        lst.append(i)print(lst)#print([i for i in range(20) if i % 2 == 0 ])這兩個的結(jié)果是一樣的,你看第二個多簡潔
生成器表達(dá)式循環(huán)模式g = (i for i in range(20))print(next(g))print(next(g))print(list([i for i in range(20)]))
#字典模式 #  {鍵:值 for 循環(huán)  加工條件}print({i:i 1 for i in range(10)})#{0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}print({i:i 1 for i in range(20) if i % 2 == 0}){0: 1, 2: 3, 4: 5, 6: 7, 8: 9, 10: 11, 12: 13, 14: 15, 16: 17, 18: 19}
集合推導(dǎo)式print({i for i in range(20)}){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}print({i for i in range(20) if i % 2 == 0 }){0, 2, 4, 6, 8, 10, 12, 14, 16, 18}
生成器總結(jié)
list:# [變量(加工后的變量) for循環(huán)]# [變量(加工后的變量) for循環(huán) 加工條件]# 生成器表達(dá)式:# (變量(加工后的變量) for循環(huán))# (變量(加工后的變量) for循環(huán) 加工條件)# 字典推導(dǎo)式:# {鍵:值 for循環(huán) 加工條件}# 集合推導(dǎo)式:# {變量(加工后的變量) for循環(huán) 加工條件}

內(nèi)置函數(shù)一

eval:執(zhí)行字符串類型的代碼,并返回最終結(jié)果

eval('2   2')  # 4n=81eval("n   4")  # 85eval('print(666)')  # 666

exec:執(zhí)行字符串類型的代碼。

s = '''for i in [1,2,3]:    print(i)'''exec(s)

以上兩個內(nèi)置函數(shù)很強(qiáng)大 工作中禁止使用

hash:獲取一個對象(可哈希對象: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-463751598188813973912528502973977326415'''

help:函數(shù)用于查看函數(shù)或模塊用途的詳細(xì)說明。

print(help(list))print(help(str.split))

callable:函數(shù)用于檢查一個對象是否是可調(diào)用的。如果返回True,仍然可能調(diào)用失??;但如果返回False,調(diào)用對象ojbect絕對不會成功。

name = 'alex'def func():    passprint(callable(name))  # Falseprint(callable(func))  # True

int:函數(shù)用于將一個字符串或數(shù)字轉(zhuǎn)換為整型。

print(int())  # 0print(int('12'))  # 12print(int(3.6))  # 3print(int('0100',base=2))  # 將2進(jìn)制的 0100 轉(zhuǎn)化成十進(jìn)制。結(jié)果為 4

float:函數(shù)用于將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù)。

complex:函數(shù)用于創(chuàng)建一個值為 real imag * j 的復(fù)數(shù)或者轉(zhuǎn)化一個字符串或數(shù)為復(fù)數(shù)。如果第一個參數(shù)為字符串,則不需要指定第二個參數(shù)。。

print(float(3))  # 3.0print(complex(1,2))  # (1 2j)

bin:將十進(jìn)制轉(zhuǎn)換成二進(jìn)制并返回。

oct:將十進(jìn)制轉(zhuǎn)化成八進(jìn)制字符串并返回。

hex:將十進(jìn)制轉(zhuǎn)化成十六進(jìn)制字符串并返回。

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'>

divmod:計算除數(shù)與被除數(shù)的結(jié)果,返回一個包含商和余數(shù)的元組(a // b, a % b)。

round:保留浮點(diǎn)數(shù)的小數(shù)位數(shù),默認(rèn)保留整數(shù)。

pow:求xy次冪。(三個參數(shù)為xy的結(jié)果對z取余)

print(divmod(7,2))  # (3, 1)print(round(7/3,2))  # 2.33print(round(7/3))  # 2print(round(3.32567,3))  # 3.326print(pow(2,3))  # 兩個參數(shù)為2**3次冪print(pow(2,3,3))  # 三個參數(shù)為2**3次冪,對3取余。

bytes:用于不同編碼之間的轉(zhuǎn)化。

# 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:輸入字符找當(dāng)前字符編碼的位置

chr:輸入當(dāng)前編碼的位置數(shù)字找出其對應(yīng)的字符

# ord 輸入字符找該字符編碼的位置# print(ord('a'))# print(ord('中'))# chr 輸入位置數(shù)字找出其對應(yīng)的字符# print(chr(97))# print(chr(20013))

repr:返回一個對象的string形式(原形畢露)。

# %r  原封不動的寫出來# name = 'taibai'# print('我叫%r'%name)# repr 原形畢露print(repr('{"name":"alex"}'))print('{"name":"alex"}')

all:可迭代對象中,全都是True才是True

any:可迭代對象中,有一個True 就是True

# all  可迭代對象中,全都是True才是True# any  可迭代對象中,有一個True 就是True# print(all([1,2,True,0]))# print(any([1,'',0]))
來源:https://www.icode9.com/content-4-339751.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【連載電子書五】Python函數(shù)編程(下)
2022年P(guān)ython十級試題(全國卷B)
python入門教程(八)淺談生成器與裝飾器
ES6這些就夠了
Python 2 和 Python 3 主要區(qū)別有哪些(一)
給妹子講python-S01E17函數(shù)的基本特征
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服