日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python-----学了今天,忘了昨天.

發(fā)布時間:2023/12/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-----学了今天,忘了昨天. 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 生成器初始- 生成器本質(zhì)就是迭代器。python社區(qū)生成器與迭代器是一種。生成器與迭代器的唯一區(qū)別:生成器是我們自己用python代碼構(gòu)建的。2. 生成器產(chǎn)生方式- 生成器函數(shù)。- 生成器表達(dá)式。- python給你提供的一些內(nèi)置函數(shù),返回一個生成器。3. 生成器函數(shù)。- 之前接觸的函數(shù): # def func():# print(111)# return 2# ret = func()# print(ret)# 執(zhí)行此函數(shù),遇到return結(jié)束函數(shù)。# 將數(shù)字2返回給ret。 - 生成器函數(shù): 只要函數(shù)中出現(xiàn)了yield那么他就不是函數(shù),它是生成器函數(shù)

def func():
# print(111)
# print(111)
# print(111)
# print(111)
# print(111)
# print(111)
yield 2,4,5
yield 3
yield 4
yield 5
ret = func() # 生成器對象
# print(ret) # <generator object func at 0x0000000001E10F68>
'''
# 類比
l1 = [2,] [2,3,4,5]
obj = iter(l1)

'''
# 只要函數(shù)中出現(xiàn)了yield那么他就不是函數(shù),它是生成器函數(shù)。
# 一個next對應(yīng)一個yield.
# print(next(ret))
# print(next(ret))
# print(next(ret))
# print(next(ret))
# print(next(ret))
# print(next(ret))

4. yiled與return的區(qū)別

# return 結(jié)束函數(shù),給函數(shù)的執(zhí)行者返回值(多個值通過元組的形式返回)。
# yield 不結(jié)束函數(shù),對應(yīng)著給next返回值(多個值通過元組的形式返回)。
```

  • send(了解)

    pass

  • 生成器的舉例

    # def eat_baozi(): # list1 = [] # for i in range(1,2001): # list1.append(f'{i}號包子') # return list1 # # print(eat_baozi())def eat_baozi_gen():for i in range(1,2001):# print(11)yield f'{i}號包子'''' # ret1 = eat_baozi_gen() # ret2 = eat_baozi_gen() # # print(ret1) # # print(ret2) # print(next(ret1)) # print(next(ret1)) # print(next(ret1)) # # print(next(ret2)) # print(next(ret2)) # print(next(ret2)) # print(next(ret)) # print(next(ret)) '''# ret = eat_baozi_gen() # # for i in range(200): # print(next(ret)) # # for i in range(200): # print(next(ret))
  • yiled與yiled from。

    # yield from# def func(): # l1 = [1, 2, 3] # yield l1 # ret = func() # print(next(ret)) # print(next(ret)) # print(next(ret))# def func(): # l1 = [1, 2, 3] # yield from l1 # # ''' # yield 1 # yield 2 # yield 3 # ''' # ret = func() # print(next(ret)) # print(next(ret)) # print(next(ret))# yield : 對應(yīng)next給next返回值 # yield from 將一個可迭代對象的每一個元素返回給next # yield from 節(jié)省代碼,提升效率(代替了for循環(huán))
  • 列表推導(dǎo)式,生成器表達(dá)式(字典推導(dǎo)式,集合推導(dǎo)式)。

    • 列表推導(dǎo)式:一行代碼構(gòu)建一個有規(guī)律比較復(fù)雜的列表。
    • 列表推導(dǎo)式與之前寫法對比
    # l1 = [1,2,3......100] # l1 = [] # for i in range(1,101): # l1.append(i) # print(l1)# 列表推導(dǎo)式 l1 = [i for i in range(1, 101)] # print(l1)
    • 兩種構(gòu)建方式:
      1.循環(huán)模式: [變量(加工后的變量) for 變量 in iterable]
      2.篩選模式: [變量(加工后的變量) for 變量 in iterable if 條件]

    • 循環(huán)模式:

      # 循環(huán)模式: # 將10以內(nèi)所有整數(shù)的平方寫入列表。 # print([i**2 for i in range(1, 11)]) # 100以內(nèi)所有的偶數(shù)寫入列表. # print([i for i in range(2, 101, 2)]) # 從python1期到python100期寫入列表list # print([f'python{i}期' for i in range(1, 101)])
    • 篩選模式:

      # print([i for i in range(1, 101) if i > 49]) # 三十以內(nèi)可以被三整除的數(shù)。 # print([i for i in range(1, 31) if i % 3 == 0]) # 過濾掉長度小于3的字符串列表,并將剩下的轉(zhuǎn)換成大寫字母 # l1 = ['barry', 'fdsaf', 'alex', 'sb', 'ab'] # print([i.upper() for i in l1 if len(i) > 3]) # 找到嵌套列表中名字含有兩個‘e’的所有名字(有難度) names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] # l1 = [] # for i in names: # for j in i: # if j.count('e') > 1: # l1.append(j) # print(l1)print([j for i in names for j in i if j.count('e') > 1])
    • 列表推導(dǎo)式的優(yōu)缺點:

      # 列表推導(dǎo)式的優(yōu)缺點: # 優(yōu)點:# 1, 簡單,快捷,裝b。 # 缺點:# 2. 可讀性不高,不好排錯。 # 慎用,不要入迷。
    • 生成器表達(dá)式:

    與列表推導(dǎo)式幾乎一模一樣。

    循環(huán)模式,篩選模式。

    # obj = (i for i in range(1, 11))# # print(obj)# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))
    • 如何觸發(fā)生成器(迭代器)取值?
    # # 1. next(obj)# # 2. for 循環(huán)# # for i in obj:# # print(i)# # 3. 數(shù)據(jù)轉(zhuǎn)化# print(list(obj))# 生成器表達(dá)式:生成器 節(jié)省內(nèi)存。
    • 字典推導(dǎo)式,集合推導(dǎo)式
    # 字典推導(dǎo)式,集合推導(dǎo)式: 兩種模式: 循環(huán)模式,篩選模式 l1 = ['小潘', '懟懟哥','西門大官人', '小澤ml亞'] # {0: '小潘', 1: '懟懟哥', 2: '西門大官人'} # dic = {} # for index in range(len(l1)): # dic[index] = l1[index] # print(dic) # print({i:l1[i] for i in range(len(l1))})# 1~100# print({i for i in range(1, 101)})
  • 內(nèi)置函數(shù)I。

    內(nèi)置函數(shù):內(nèi)置的函數(shù),python中的內(nèi)置函數(shù)68種。13種是在面向?qū)ο笾笾v解,還有一些不講的。

    # eval exce # # 慎用 # s1 = "{1: 'alex'}" # s2 = '1 + 3' # eval 剝?nèi)プ址耐庖?#xff0c;返回里面的本質(zhì) # ret = eval(s1) # print(ret,type(ret)) # print(eval(s2))# exec 代碼流,過程。 # s3 = ''' # for i in range(3): # print(i) # ''' # exec(s3)# s3 = input('>>>') # print(eval(s3))# hash() # print(hash(123214134)) # print(hash('fkljdsaklgjdfs')) # print(hash('gjdfs'))# help() # print(help(str.count))# callable ** # def a(): # pass # # b = 3433# a() # b() # print(callable(a)) # print(callable(b))# int ** # print(int(3.14)) # print(int('123'))# print(float(100))# print(complex(1,2))# print(bin(100)) # 將十進(jìn)制轉(zhuǎn)化成二進(jìn)制。 ** # print(oct(10)) # 將十進(jìn)制轉(zhuǎn)化成八進(jìn)制字符串并返回。 # print(hex(17)) # 將十進(jìn)制轉(zhuǎn)化成十六進(jìn)制字符串并返回。 ** # print(hex(15))# 計算除數(shù)與被除數(shù)的結(jié)果,返回一個包含商和余數(shù)的元組(a // b, a % b)分頁用到 # print(divmod(10, 3)) # **# 保留小數(shù)的有效位置 # print(round(3.1485926,2))# print(pow(3, 3)) # 3*3*3 # print(pow(3, 3, 2))# 輸入字符尋找其在unicode的位置。 # print(ord('a')) # print(ord('中'))# 輸入位置數(shù)字找出其對應(yīng)的字符 # print(chr(98)) # ** # print(chr(20104)) # 予# repr 原形畢露 ** # print('太白') # print(repr('太白'))# msg = '我叫%r' %('太白') # print(msg)# all any ** # 0,'',[],{},set(),(),None# l1 = [1, 'fgdsa', [], {1: 2}] l2 = [0, '', [], {}] # print(all(l1)) # 判斷可迭代對象元素全部都為True,返回True print(any(l2)) # 判斷可迭代對象元素只要有一個True返回True
  • 匿名函數(shù)。

    # 匿名函數(shù):沒有名字的函數(shù) # 匿名函數(shù)只能構(gòu)建簡單的函數(shù),一句話函數(shù)。def func(x,y):return x + y # print(func(1, 2))# 匿名函數(shù)構(gòu)建 # func2 = lambda x,y: x + y # print(func2(1, 2))# 匿名函數(shù)最常用的就是與內(nèi)置函數(shù)結(jié)合使用。# 寫匿名函數(shù):接收一個可切片的數(shù)據(jù),返回索引為 0與2的對應(yīng)的元素(元組形式)。# func = lambda x: (x[0],x[2]) # print(func('太白金星')) # 寫匿名函數(shù):接收兩個int參數(shù),將較大的數(shù)據(jù)返回。# func1 = lambda x, y: x if x > y else y # print(func1(100,2))# func2 = lambda : 3 # print(func2()) # str() dir() range() len() print() max() min() open() # input() type() int() enumerate() list() id() set() dict() # iter() next() tuple() bool() globals() locals() frozenset() #
  • 內(nèi)置函數(shù)II.

    # sep 設(shè)定分割符。 # end 默認(rèn)是換行可以打印到一行 # print(1, 2, 3, sep='|') # print(1, 2, end=' ') # print(3, 4) # f = open('log','w',encoding='utf-8') # # f.write('寫入文件') # print('寫入文件', file=f)# list # l1 = list('fdsafd') # print(l1)# dict # 創(chuàng)建字典的幾種方式 # dic = {1: 2} # # 字典推導(dǎo)式 # # print({i: 1 for i in range(3)}) # # dict() # dic = dict(one=1, two=2, three=3) # print(dic) # # fromkeys()# abs() 獲取絕對值 # print(abs(-10))# sum() 數(shù)字相加求和 # sum(iterable,) # print(sum([1,2,3,4])) # print(sum([1, 2, 3, 4], 100))# 非常非常非常重要的# min 可以加功能 # print(min([22, 11, 45, 2])) l1 = [('alex', 73, 170), ('太白', 18, 185), ('武大', 35, 159),] # # l1 = [(73, 'alex'), (35, '武大'), (18, '太白')] # # 找年齡最小的元組 # # print(min(l1)) # # 通過設(shè)置key去使用min # # key = 函數(shù)名 # # def func(x): # x = ('alex', 73) # # return x[1] # # # 返回值是什么就按照什么比較最小的。 # # min 會自動的將可迭代對象的每一個元素作為實參傳給x, ''' 第一次,x = ('alex', 73) 73 第二次,x = ('武大', 35) 35 第三次,x = ('太白', 18) 18 ''' # 將遍歷的那個元素即是 ('太白', 18) 返回 # print(min(l1,key=func)) # print(min(l1,key=lambda x: x[1]))# def func(x): # return x[1]# print(min(l1,key=func)) # print(min(l1,key=lambda x: x[1])) # print(min(l1,key=lambda x: x[2])[0])a = 1 # 練習(xí): dic = {'a':3,'b':2,'c':1} # 將dic值最小的鍵返回。 # print(min(dic,key= lambda x:dic[x])) # # 將dic值最小的值返回。 # print(dic[min(dic,key= lambda x:dic[x])])# dic = {'A':['李業(yè)', 67],'b': ['懟哥', 95],'c': ['馮垚', 85]} # # # 將成績最低的從屬于的那個列表返回。 # print(dic[min(dic,key=lambda x:dic[x][1])]) # # 將成績最低的分?jǐn)?shù)返回。 # print(dic[min(dic,key=lambda x:dic[x][1])][1])# max() 與min 相同。# reversed() 對一個可迭代對象進(jìn)行翻轉(zhuǎn),返回一個迭代器# s1 = 'alex' # # print(reversed(s1)) # for i in reversed(s1): # print(i)# 內(nèi)置函數(shù):bytes() s1 = '太白' # 方法一: # print(s1.encode('utf-8')) # 方法二: # print(bytes(s1,encoding='utf-8'))# 解碼: # b1 = b'\xe5\xa4\xaa\xe7\x99\xbd' # # 方法一: # # print(b1.decode('utf-8')) # # 方法二: # print(str(b1, encoding='utf-8'))
  • 生成器的初識生成器本質(zhì)就是迭代器.python社區(qū)中生成器與迭代器是一種.生成器與迭代器唯一的區(qū)別:生成器是我們自己用python代碼構(gòu)建的 生成器的產(chǎn)生方式生成器函數(shù) 生成器表達(dá)式 python給你提供的一些內(nèi)置函數(shù),返回一個生成器 生成器函數(shù)def func():? print(111)? return 2ret = func() #執(zhí)行此函數(shù),遇到return結(jié)束函數(shù)print(ret) #將數(shù)字2返回給retdef func():? print(111)? yield 2ret = func() #生成器對象print(next(ret))1112##只要函數(shù)中出現(xiàn)yield那么他就不是函數(shù),他是生成器函數(shù)##一個next對應(yīng)一個yieldyiled與return的區(qū)別return 結(jié)束函數(shù) 給函數(shù)的執(zhí)行者返回值(返回值是多個值時通過元組的形式返回) yield 不結(jié)束函數(shù) 對應(yīng)著給next返回值(返回值是多個值時通過元組的形式返回) send(了解)生成器的舉例def eat_baozi():list1 = []for i in range(1,2001):? list1.append(f'{i}號包子')return list1eat_baozi()yield與yiled fromyield: 對應(yīng)next給next返回值yield from: 將一個可迭代對象的每一個元素 返回給nextyield from: 節(jié)省代碼,提升效率(代替了for循環(huán))列表推導(dǎo)式,生成器表達(dá)式(字典推導(dǎo)式,集合推導(dǎo)式)列表推導(dǎo)式: 一行代碼構(gòu)建一個有規(guī)律的比較復(fù)雜的列表.兩種構(gòu)建方式:循環(huán)模式:[變量(加工后的變量) for 變量 in iterable] 篩選模式:[變量(加工后的變量) for 變量 in iterable if 條件] 列表推導(dǎo)式的優(yōu)缺點:優(yōu)點: 簡單 快捷 裝逼 缺點: 可讀性不高,不好排錯 慎用 不要入迷生成器表達(dá)式:與列表表達(dá)式幾乎一模一樣循環(huán)模式,篩選模式如何觸發(fā)生成器(迭代器)取值?next(obj) for循環(huán) 數(shù)據(jù)轉(zhuǎn)化 生成器表達(dá)式: 節(jié)省內(nèi)存字典推導(dǎo)式:兩種模式 循環(huán)模式 篩選模式內(nèi)置函數(shù)1:python中的內(nèi)置函數(shù)68種.eval 剝?nèi)プ址耐庖?返回里面的本質(zhì) 慎用 exec 執(zhí)行代碼流 過程 hash 計算hash值 help 提供幫助的 callable 判斷一個對象是否可調(diào)用的 int 取整 轉(zhuǎn)換成整數(shù) float 轉(zhuǎn)換成小數(shù) complex -數(shù) bin 將十進(jìn)制轉(zhuǎn)換成二進(jìn)制 oct 將十進(jìn)制轉(zhuǎn)換成八進(jìn)制 hex 將十進(jìn)制轉(zhuǎn)換成十六進(jìn)制 divmod 計算除數(shù)與被除數(shù)的值 分頁用到 round 保留小數(shù)的有效位數(shù)會四舍五入 pow 求次冪 bytes 用于不同編碼之間的轉(zhuǎn)換 ord 輸入字符找該字符編碼的位置 輸入字符尋找其在Unicode的位置 chr 輸入位置數(shù)字找出其對應(yīng)的字符 repr 返回一個對象的string形式(原形畢露) all 判斷可迭代對象元素全部為True返回True any 判斷可迭代對象只要有一個元素為True就返回True 內(nèi)置函數(shù)sep: 設(shè)定分隔符 end:默認(rèn)是換行可以打印到一行 list: dict: abs:獲取絕對值 sum:sum(iterable,) 只能是數(shù)字相加 max():求最大值 min():求最小值可以加功能 reversed 對一個可迭代對象進(jìn)行翻轉(zhuǎn)返回一個迭代器 匿名函數(shù):沒有名字的函數(shù)匿名函數(shù)只能構(gòu)建簡單的函數(shù),一句話函數(shù). 匿名函數(shù)的構(gòu)建 lambda 匿名函數(shù)最常用的就是與內(nèi)置函數(shù)結(jié)合使用 func = lanbda x,y: x+y

    轉(zhuǎn)載于:https://www.cnblogs.com/hql1117/p/11061091.html

    總結(jié)

    以上是生活随笔為你收集整理的Python-----学了今天,忘了昨天.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。