Python基礎14 模組 生成器與迭代器

2021-10-09 13:40:18 字數 4022 閱讀 5749

十、推導式、生成器、迭代器

2、生成器

3、迭代器 (iterator)

任何python程式都可以作為模組匯入;

模組的優點:

方便開發、維護、復用

可以使用 import 匯入模組

每個py為字尾的檔案都是模組

語法:

import 模組名

1.1、as 別名
as 指定模組別名

語法:

import 模組名 as 模組別名

1.2、匯入模組變數和物件呼叫
匯入單個物件

import 後可以是模組中任意乙個物件(變數、函式、物件)

語法:

from 模組名 import 物件

匯入多個物件

語法:

from 模組名 import 物件,物件,物件,..

....

匯入全部內容

語法:

from 模組名 import

*

部分匯入並改名

示例1:

from 模組名 import 物件 as 物件別名

在呼叫模組時通過__name__獲取模組的名字,

在當前檔案呼叫__name__會獲得__mian__,表示當前檔案時主檔案

示例1:獲取匯入模組的名字

import turtle as hg

print

(hg.__name__)

>> turtle

示例2:

r = __name__

print

(type

(r),r)

>>

<

class

'str'

> __main__

檢測是否主模組:

if __name__ ==

'__mian__'

:pass

# **塊

1.1、列表推導式
列表推導式是從其他列表建立列表的方法,列表推導式類似於for迴圈

語法:

[變數 for 變數 in 舊列表]

or[變數 for 變數 in 舊列表 if 條件判斷]

示例1:

l =[x * x for x in

range(10

)]print

(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

)]print

(l)>>[(

0,0)

,(0,

1),(

0,2)

,(1,

0),(

1,1)

,(1,

2),(

2,0)

,(2,

1),(

2,2)

]

1.2、字典推導式
推導式語法都是通用的

示例1:

d =print

(d)>>

示例2:

l =[

'a',

'b',

'c']

d ='

:f''

for y in l for i in

range(3

)}print

(d)>>

1.3、集合推導式
示例1:

s =print

(s)>>

一邊迴圈一邊計算的機制稱之為 生成器

生成器是為了節約記憶體和優化程式

生成器型別:generator

語法:

i =(變數 for 變數 in

range()

)獲取元素:

生成器.__next__(

)next

(生成器)

next 每執行一次,就會生成器就會生成乙個值

2.1、通過列表推導式來得到生成器
用圓括號包括的推導式不是元組推導式,而是生成器

示例1:

g =(i for i in

range(1

,6))

print

(next

(g))

print

(next

(g))

print

(next

(g))

print

(d.__next__())

print

(d.__next__())

>>

1>>

2>>

3>>

4>>

5

2.2、通過函式得到生成器
在函式中,每次使用 yield 生成乙個值後函式都將凍結,停止執行,等待被重新喚醒,喚醒後函式將從停止的地方開始繼續執行

包含 yield語句的函式都稱為生成器

示例1:

defsum()

:for i in

range(1

,10000):

yield i

d =sum()

print

(d.__next__())

print

(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,執行後返回...