新手Python學習記錄Day6

2021-09-11 22:35:31 字數 2377 閱讀 5711

#使a中每項+1

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for index,i in enumerate(a):

a[index] = i + 1

a = map(lambda x:x+1, a) #構建匿名函式

a = [i+1 for i in range(10)] #重新構造了乙個列表(列表生成)

l = [x*x for x in range(10)]

g = (x*x for x in range(10)) #generator

生成器操作

next(g) #調出g中下乙個元素的值,當沒有元素時,丟擲stopiteration的錯誤

for n in g:

print(n)

'''迭代器iterator,生成器是iterator的物件可以被next()函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next()函式實現按需計算下乙個資料,所以iterator的計算是惰性的,只有在需要返回下乙個資料時它才會計算。

iterator甚至可以表示乙個無限大的資料流,例如全體自然數。而使用list是永遠不可能儲存全體自然數的

'''

#斐波拉契數列

def fib(max):

n,a,b = 0,1,1

while n < max:

print(b)

a,b =b, a+b

n = n+1

return 'done'

def fib(max):

n,a,b = 0,0,1

while n < max:

#print(b)

yield b #generator寫法,在每次呼叫next(g)/g.__next__()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行

a,b = b,a+b

n += 1

return 'done'

data = fib(10)

print(data)

print(data.__next__())

print(data.__next__())

#用迴圈呼叫generator時,發現拿不到generator的return語句的返回值。如果想要拿到返回值,必須捕獲stopiteration錯誤,返回值包含在stopiteration的value中:

while true:

try:

x = next(data)

print('data:',x)

except stopiteration as e:

print('generator return value:', e.value)

break

yield實現單執行緒情況下實現併發運算

import time

def consumer(name):

print('%s 吃飯!'%name) #引用name變數,注意字元前無逗號 ,

while true:

fan = yield

print('飯 %s 來了,被 %s 吃了!'%(fan,name))

def producer(name):

c = consumer('a')

c2 = consumer('b')

c.__next__()

c2.__next__()

print('準備做飯!')

for i in range(10):

time.sleep(0.5)

print('做好了')

c.send(i)

c2.send(i) #將i值傳遞到yield中

producer('cook')

匿名函式+裝飾器樣例

模擬實現乙個atm + 購物**程式

額度 15000或自定義

實現購物**,買東西加入 購物車,呼叫信用卡介面結賬

可以提現,手續費5%

每月22號出賬單,每月10號為還款日,過期未還,按欠款總額 萬分之5 每日計息

支援多賬戶登入

支援賬戶間轉賬

記錄每月日常消費流水

提供還款介面

atm記錄操作日誌

提供管理介面,包括新增賬戶、使用者額度,凍結賬戶等。。。

使用者認證用裝飾器

新手Python學習記錄Day4

f open lyrics.txt first line f.readline 讀取一行資料 for line in f.readlines 將所有行組成乙個列表 print line.strip for index,line in enumerate f.readlines 很佔記憶體,一般不用 ...

Python 新手學習記錄 列表 字典

今天是python學習的第二天,列表和字典,個人筆記記錄 name 小白 小紅 小藍 小黃 索引從0開始 print name 0 小白 可以逆序訪問 print name 1 小黃 修改某個元素 name 0 大白 print name 0 大白 刪除元素 del 刪除某個位置元素 del nam...

node新手學習記錄

情況 node執行指令碼不會實時更新 解決 安裝nodemon 安裝命令 npm install g nodemon 啟動命令 nodemon 指令碼.js node.js的應用組成部分 require指令,使用require指令來載入node.js模組 建立伺服器,可以監聽客戶端的請求 接收請求與...