python 生成器 推導式 遞迴

2022-08-28 01:54:08 字數 2518 閱讀 4425

目錄3 遞迴

判斷乙個函式是否是生成器函式:只需看函式內部是否有yield

# 生成器函式(內部是否包含yield)

def func():

print('f1')

yield 1

print('f2')

yield 2

print('f3')

yield 100

print('f4')

# (只要有yield)函式內部**不會執行,返回乙個 生成器物件 。

v1 = func()

# 生成器是可以被for迴圈,一旦開始迴圈那麼函式內部**就會開始執行。

for item in v1:

print(item)

迴圈流程:

其他知識:

生成器的send方法

def func():

print(123)

n = yield 'aaa'

print('-->',n)

yield 'bbb'

g = func()

print(g)

n = next(g)

print(n)

print('-'*20)

next(g) # g.send('uysdfhfoiusyg')與next(g)的作用一樣

注意:

2.1 列表推導式

2.2 集合推導式

2.3 字典推導式

2.4 生成器推導式

# def func():

# result =

# for i in range(10):

# return result

# v1 = func()

v1 = [i for i in range(10)] # 列表推導式,立即迴圈建立所有元素。

print(v1)

# def func():

# for i in range(10):

# yield i

# v2 = func()

v2 = (i for i in range(10)) # 生成器推導式,建立了乙個生成器,內部迴圈為執行。

# 示例一

def func():

result =

for i in range(10):

return result

v1 = func()

for item in v1:

print(item)

# 示例二

def func():

for i in range(10):

def f():

return i

yield f

v1 = func()

for item in v1:

print(item())

# 示例三:

v1 = [i for i in range(10)] # 列表推導式,立即迴圈建立所有元素。

v2 = (lambda :i for i in range(10))

for item in v2:

print(item())

遞迴就是 函式自己呼叫自己(缺點:效率低)

python預設支援的遞迴最大數是1000次

def func():

print(1)

func()

func()

def func(i):

print(i)

func(i+1)

func(1)

def func(a,b):          # 只能遞迴1000次的斐波那契

# 1# 1

# 2# 3

# 5

print(b)

func(b,a+b)

func(0,1)

def func(a):

if a == 5:

return 100000

result = func(a+1) + 10

return result

v = func(1)

# 遞迴的返回值

def func(a):

if a == 5:

return 100000

result = func(a+1) + 10

v = func(1)

name = 'alex'

def func():

def inner():

print(name)

return inner

v =func()

python生成器推導式

1.生成器推導式是繼列表推導式後的有一中python推導式,他比列表推導式速度更快,占用的記憶體也更少。2.使用生成器物件時,可以根據需要將他轉化為列表或者元組,也可以是喲個生成器對像 next 方法或內建函式next 進行遍歷,其具有惰性求值的特點,進行一次遍歷後便不能再次方位內部元素,即訪問一次...

生成器,生成器推導式和列表推導式

python社群,大部分生成器和迭代器是一種 生成器的本質是迭代器 唯一區別 生成器是我們自己用python 構建的資料結構 迭代器都是提供的,或者轉化得來的 生成器函式 生成器表示式 python提供的 yield 乙個next 對應乙個yield yield和下乙個yield中間有 的話只執行乙...

推導式 生成器

1.推導式生成列表 表示式 for item in 可迭代物件 或者 表示式 for item in 可迭代物件 if 條件判斷 推導式生成列表 ls x for x in range 1,5 if x 2 0 2,4 2.生成器生成元組 表示式 for item in 可迭代物件 或者 表示式 f...