Python-----学了今天,忘了昨天.
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))
# 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)式與之前寫法對比
兩種構(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ā)生成器(迭代器)取值?
- 字典推導(dǎo)式,集合推導(dǎo)式
內(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'))轉(zhuǎn)載于:https://www.cnblogs.com/hql1117/p/11061091.html
總結(jié)
以上是生活随笔為你收集整理的Python-----学了今天,忘了昨天.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL查询更新所有满足条件的数据
- 下一篇: SpringBoot学习笔记(16):单