現在有個需求,列表[1, 2, 3, 4, 5, 6, 7, 8, 9],將列表裡的每個值加1。
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b =
for item in a:
a = b
print(a)
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for index, ele in enumerate(a, 0):
a[index] += 1
print(a)
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = list(map(lambda x:x+1,a))
print(a)
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i + 1 for i in a])
print('\n'.join([''.join(['%d * %d = %-3d' % (i, j, i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))
g = (i for i in range(5))
print(type(g),g.next())
# 使用next()取值
g = (i for i in range(5))
print(type(g))
print('開始取值')
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
# print(next(g)) # 報錯:stopiteration,因為取不到值了
# 基本上不會使用next(),正確應該使用for迴圈。而且還不需要擔心會報錯。拿不到函式return返回值
g = (i for i in range(10))
for i in g:
print(i)
# 斐波拉契:1 1 2 3 5 8 13 21
def fbi(num):
n, a, b = 0, 0, 1
while n < num:
yield b # # 到這停止,可以理解為凍結當前**。並且,把值返回給外面的next()
print(a, b)
a, b = b, a + b
n += 1
for i in fbi(2):
print(i)
函式加了yield之後
深入
# 生成器send,相當於喚醒。
def work(n):
count = 0
while count < n:
count += 1
sign = yield count
print('sign的值:',sign)
if not sign:
yield count + 2
new_range = work(4)
# res = next(new_range) # 開始第一次取值 拿到乙個1
# print(res) # 1
# res1 = new_range.send(true) # 第二次取值 傳送乙個true 函式遇到true 迴圈
# print(res1) # 2
# res2 = new_range.send(false) # 第三次取值 n=3
# print(res2)
這些型別稱為可迭代物件:iterable
from collections import iterable
print(isinstance(,iterable))
print(isinstance('',iterable))
print(isinstance({},iterable))
print(isinstance(set(),iterable))
print(isinstance((i for i in range(2)),iterable))
生成器不僅可以作用域for還可以被next()不斷取值,直到沒有資料可取
from collections import iterator
print(isinstance((i for i in range(2)),iterator))
Python筆記003 生成器和生成器表示式
以下是我學習 流暢的python 後的個人筆記,現在拿出來和大家共享,希望能幫到各位python學習者。生成器使用yield做關鍵字,一次只返回乙個值給呼叫者,然後暫停執行,其作用是 節省記憶體空間。生成器可以用next 函式,也可以用for迭代的方式獲取元素值,中間還可以用close 來隨時終止生...
Python(五)生成器 迭代器
一 生成器 求平方 傳統方法 浪費時間 square table for i in range 10000 for i in range 10 print square table i 生成器 到使用的時候才做真正的計算,節省時間和空間 square generator x x for x in r...
生成器 迭代器
最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...