十、推導式、生成器、迭代器
2、生成器
3、迭代器 (iterator)
任何python程式都可以作為模組匯入;模組的優點:
方便開發、維護、復用
可以使用 import 匯入模組每個py為字尾的檔案都是模組
1.1、as 別名語法:
import 模組名
as 指定模組別名
1.2、匯入模組變數和物件呼叫語法:
import 模組名 as 模組別名
匯入單個物件import 後可以是模組中任意乙個物件(變數、函式、物件)
語法:
from 模組名 import 物件
匯入多個物件
語法:
from 模組名 import 物件,物件,物件,..
....
匯入全部內容
語法:
from 模組名 import
*
部分匯入並改名
示例1:
from 模組名 import 物件 as 物件別名
在呼叫模組時通過__name__獲取模組的名字,在當前檔案呼叫__name__會獲得__mian__,表示當前檔案時主檔案
示例1:獲取匯入模組的名字
import turtle as hg
(hg.__name__)
>> turtle
示例2:
r = __name__
(type
(r),r)
>>
<
class
'str'
> __main__
1.1、列表推導式檢測是否主模組:
if __name__ ==
'__mian__'
:pass
# **塊
列表推導式是從其他列表建立列表的方法,列表推導式類似於for迴圈
語法:
[變數 for 變數 in 舊列表]
or[變數 for 變數 in 舊列表 if 條件判斷]
1.2、字典推導式示例1:
l =[x * x for x in
range(10
(l)>>[0
,1,4
,9,16
,25,36
,49,64
,81]示例2:
l =[x for x in
range(20
)if x %2==
0]print
(l)>>[0
,2,4
,6,8
,10,12
,14,16
,18]示例3:
l =[
(x,y)
for x in
range(3
)for y in
range(3
(l)>>[(
0,0)
,(0,
1),(
0,2)
,(1,
0),(
1,1)
,(1,
2),(
2,0)
,(2,
1),(
2,2)
]
推導式語法都是通用的
1.3、集合推導式示例1:
d =print
(d)>>
示例2:
l =[
'a',
'b',
'c']
d ='
:f''
for y in l for i in
range(3
(d)>>
示例1:
s =print
(s)>>
一邊迴圈一邊計算的機制稱之為 生成器生成器是為了節約記憶體和優化程式
生成器型別:generator
語法:
i =(變數 for 變數 in
range()
)獲取元素:
生成器.__next__(
)next
(生成器)
next 每執行一次,就會生成器就會生成乙個值2.1、通過列表推導式來得到生成器
用圓括號包括的推導式不是元組推導式,而是生成器
2.2、通過函式得到生成器示例1:
g =(i for i in
range(1
,6))
(next
(g))
(next
(g))
(next
(g))
(d.__next__())
(d.__next__())
>>
1>>
2>>
3>>
4>>
5
在函式中,每次使用 yield 生成乙個值後函式都將凍結,停止執行,等待被重新喚醒,喚醒後函式將從停止的地方開始繼續執行
包含 yield語句的函式都稱為生成器
示例1:
defsum()
:for i in
range(1
,10000):
yield i
d =sum()
(d.__next__())
(next
(d))
>>
1>>
2
迭代( iterate ) 指的是 獲取元素的一次過程可迭代 指的是可迭代物件,簡單理解為 for 迴圈
可迭代物件:
1、列表 集合 字典 元組 字串
2、生成器
迭代器 可以被next()呼叫的並不斷返回下乙個值得物件1、迭代器的使用
通過 iter 函式可以將可迭代的變成迭代器
示例1:
l =[1,
2,3,
4]print
(next
(l))
>> typeerror:
'list'
object
isnot an iterator
示例2:
l =[1,
2,3,
4]l =iter
(l)print
(next
(l))
>>
1
python基礎 生成器
生成器是根據某種演算法得出的一系列元素,需要用到該元素,才會生成出來,比列表節省記憶體空間。生成器相當於儲存演算法,授人以漁,列表之類的是授人以魚。第一種建立生成器的方法 1 gen x 2 for x in range 5 type gen 通過next 函式得到生成器的每個值 next gen ...
python基礎 生成器
生成器函式 def generator print 1 return a ret generator print ret 只要含有yield關鍵字的函式都是生成器函式 yield不能和return共用且需要寫在函式內 def generator print 1 yield a 生成器函式 執行之後會...
python 生成器作用 Python生成器
生成器介紹 在函式內部包含yield關鍵字,那麼該函式執行的結果是生成器,生成器就是迭代器。生成器的功能 把函式結果做成迭代器 以一種優雅的方式封裝好iter,next 提供了一種自己定義迭代器的方式。使用生成器建立乙個迭代器 def a print a yield 11 使用yield,執行後返回...