1.迭代器
1.什么是迭代器(iter)
迭代器是容器型數(shù)據(jù)類型厦凤,只能通過類型轉換和生成器來獲得迭代器對象
迭代器存儲數(shù)據(jù)的特點:同時可以保存多個數(shù)據(jù),沒有辦法直接查看育苟,而是需要先將數(shù)據(jù)從迭代器中取出(取出后不能再放回去)
所有的容器都可以轉換成迭代器
2.獲取迭代器中的元素
無論通過什么方式较鼓,只要將迭代器中某個元素拿到了,這個元素就不再存在了
1.遍歷
2.獲取單個元素
next(迭代器對象) - 獲取迭代器中的元素(最前面的那個元素)
2.生成式
生成式就是生成器的簡寫
列表推導式的[]變成()就變成了生成式
# 列表推導式:
list1 = [x + 2 for x in range(5)]
print(list1)
# 生成式:
gen1 = (x + 2 for x in range(5))
print(list(gen1))
3.生成器
1.什么是生成器
生成器就死迭代器
調用一個帶yield 關鍵字的函數(shù)就可以生成一個生成器
2.生成器產生數(shù)據(jù)
生成器能生產多少數(shù)據(jù)就看執(zhí)行生成器對應的函數(shù)的函數(shù)體會遇到幾次yield违柏。yield后面表達式的值就是生成器能夠產生的數(shù)據(jù)
3.生成器產生數(shù)據(jù)的原理
當獲取生成器元素的時候博烂,會自動調用生成器關聯(lián)的函數(shù),第一次從函數(shù)開始的地方開始執(zhí)行漱竖,直到遇到y(tǒng)ield為止禽篱,并且將yield后面的值作為獲取到的數(shù)據(jù),后面每次都是從上一次結束的位置開始執(zhí)行,直到遇到y(tǒng)ield馍惹,如果從開始執(zhí)行到函數(shù)結束都沒有遇到y(tǒng)ield躺率,就不會產生數(shù)據(jù)