生成器實戰與解析

2022-09-23 16:30:14 字數 1260 閱讀 8538

# -*- coding:utf-8 -*-

# ******* 生成器 最初模版 幫助理解

def test():

yield 1 # yield 相當於 return

yield 2 # yield 返回乙個生成器記憶體位址

# 可以多次yield

g = test()

print(g)

print(next(g)) # 用next取值

print(next(g))

# ******** 三元表示式

a = 'a'

res = '正確' if a == 'a' else '錯誤'

print(res)

# ********* 列表解析式 幫助理解以下

a =

for i in range(10):

a.append(i)

print(a)

# * 在列表中直接for迴圈返回值

l = [i for i in range(10)]

print(l)

# * 三元表示式在列表迴圈

l = [i for i in range(10) if i >4]

print(l)

# ********* 生成器

a = (i for i in range(10)) # 小括號返回生成器物件 中括號返回列表

print(a)

print(next(a)) # 使用next取值

print(next(a))

# * 生成器不會占用太多記憶體,取乙個拿乙個

# * 列表會直接生成,放到記憶體中

# * 使用 map 函式生成器

l = [1, 2, 3, 4]

a = map(str, l) # 返回乙個生成器記憶體位址

print(next(a))

# * 使用 zip 函式

l1 = zip(l)

print(next(l1)) # 可用 next 取值

# * 使用 reduce 函式

from functools import reduce

q = [1, 2, 2, 2]

l2 = reduce(lambda x,y:x+y, q) # print(sum(q)) 作用相同 但是占用記憶體太多

print(l2) # print(sum(i for in range(100))) 生成器方式,占用記憶體少

列表解析與生成器

1 語法 返回值 for 元素 in 可迭代物件 if 條件 使用中括號,內部是for迴圈,if條件語句可選 返回乙個新列表 高階 expr for i in iterable for j in iterable2 等價於 ret for i initerable1 for j in iterabl...

Python 解析式 生成器

datetime模組 datetime物件 datetime物件 日期格式化 import datetime dt datetime.datetime.strptime 21 11 06 16 30 d m y h m print dt.strftime y m d h m s print form...

函式與生成器

一 函式屬性 函式可以在內部建立預設的屬性,還可以在外部通過句點屬性識別符號來動態建立該函式的屬性。def foo foo properly created doc string def bar pass foo.doc foo properly created doc string bar.doc...