標籤:def 分類 字典推導式 代碼 next 匯入 range 構建 樣本
今日主要內容:
1.迭代器和產生器補充,
2.產生器運算式和列表運算式.以及各種推導式
3.內建函數
1) 迭代器和產生器補充
1.查看一個對像是否是可迭代的,以及是否是迭代器.還可以通過匯入這兩個方法來實現
樣本:
from collections import Iterable #匯入看是否可迭代的對像from collections import Iterator #匯入查看是否是迭代器s = "123"f = isinstance(s,Iterable)print(f)f2 = isinstance(s,Iterator)print(f2)"""運行結果是TrueFalse"""
2.可迭代對像的特點是內部含有__iter__這個方法,迭代器特點是內部含有__iter__方法和__next__這個方法.
3.如下樣本:注意產生器是如何產生的.
def fun(): for i in range(10): yield igen= fun() # 這裡的操作是產生一個產生器,注意,這裡是並不執行的.只是一個產生器.
4.產生器有兩種產生方法,一種是函數中帶有yield,即通過產生器函數來產生.一種是通過產生器運算式來產生.
5.可迭代對像變成迭代器的方法有如下兩種.
一種s.__iter__()這個就是產生了迭代器
一種是iter(對像)這個通過iter函數來實現
6迭代器的優點,主要有如下三個優點:
一.節省記憶體
二.惰性機制
三.單向無法復原
7.通過dir來查看一個可迭代對像是否是可迭代的,以及是否是產生器,
程式碼範例如下:
s ="123"print("__iter__" in dir(s))print("__next__" in dir(s))
2).產生器運算式和列表運算式.以及各種推導式
首先看一下列表運算式,樣本如下:
lst = ["校服%s" % i for i in range(10)]print(lst)
具體的格式如下:
[變數(加工後的變數) for 變數 in iterable] 迴圈模式
列表推導式有兩種模式,一種是上面說的迴圈模式,一種是條件模式.
分類:
[變數(加工後的變數) for 變數 in iterable] 迴圈模式
[變數(加工後的變數) for 變數 in iterable if 條件] 篩選模式
下面是範例程式碼:
#10以內所有數的平方lst = [i**2 for i in range(11)]print(lst)#30以內所有能被3整除的數的平方lst1 = [i*i for i in range(1,31) if i % 3 == 0 ]print(lst1)#100 以內所有的奇數.lst2 = [i for i in range(100) if i % 2 == 1]print(lst2)
產生器就是把[]換成()列表運算式就變成了,產生器運算式.
如上面的代碼換成產生器,並且表現出來,如下:
#10以內所有數的平方gen = (i**2 for i in range(11)) #產生一個產生器print(gen.__next__())#30以內所有能被3整除的數的平方 #gen1 = (i*i for i in range(1,31) if i % 3 == 0 ) #產生一個產生器print(gen1.__next__())#100 以內所有的奇數.gen2 = (i for i in range(100) if i % 2 == 1) #產生一個產生器print(gen2.__next__())#v如果想全部取出來的話,可以用forfor i in gen2: print(i)
為什麼有產生器:
產生器本身是自己用python代碼構建的,這樣就滿足了個人化需求,滿足以後你工作中需要.
下面有一個樣本題:
names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],[‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]
擷取上面列表中的名字裡面有兩個e的,放在新的列表中.
範例程式碼:
names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],[‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]lst = [name for i in names for name in i if name.count("e") ==2]print(lst)
各種推導式:
字典推導式:
python學習第十三章