1
. 容器:把一種多個元素組織在一起的資料結構,容器中的元素都可以迭代獲取,可以用成員關係操作符來判斷元素是
否在容器中-
--容器不是型別
2. 常見的容器:
list
tuple
strset
frozenset
dict
可以是異構的也可以是同構
(異構:多個不同型別的物體參與完成某一件事情,異構系統的各個組成部分具有自身的自治性,實現資料共享的前提下,仍保留有自己的應用特性,完整特性,安全特性。
同構:多個相同型別的物體參與完成某一件事情
)
1
. 很多容器都是可迭代物件(容器包含可迭代物件)
2. 乙個可迭代物件是不能獨自進行迭代,python中,迭代是通過for來完成的for迴圈做了一下兩件事:
>>
> k=l.__iter__()-
---k=iter
(l)>>
> k.__next__()-
----
next
(k)1
>>
> k.__next__(
)2
1
.iter()
---返回物件的迭代器
2. 他是乙個帶狀物件,可以在呼叫next
()時,返回物件的乙個值
3. 只要實現了__iter__(
),__next__(
)的物件,就是迭代器
4. 迭代器也是可迭代物件
list
strtuple
1. 可迭代物件包含序列
2. 序列可以被iter()
next
()使用
3. 生成無限序列
import itertools
a=itertools.count(
)print
(next
(a))
print
(next
(a))
4. 從乙個有限序列生成無限序列
import itertools
a=itertools.cycle([1
,2,3
])print
(next
(a))
print
(next
(a))5.
next()
懶載入機制(什麼時候使用,什麼時候調)
懶漢式載入6.
for餓漢式載入
1
. 語法:
l=[i for i in 可迭代物件]
l=[i for i in
range(10
)if4>5]
#如果if為真則執行前面的for
2. 變形:
l=[i*
2for i in
range(10
)]l=[i*
2for i in
'abcd']l=
[i*2
for i in
'abcd'if0
==true]l=
[fun(i)
for i in
range(5
)]l=[fun1(i)
if fun(i)
else fun2(i)
for i in
range(5
)]
語法:
l=
1
. 生成器表示式(生成式)
將列表的推導式方括號改為圓括號
生成器直接通過next()-
-__next__(
)進行呼叫
是乙個特殊的迭代器2.
yield 關鍵字
deffun()
: a=
10while1:
yield a
a+=1a=fun(
)print
(a)3
. 生成器是可迭代物件
容器》可迭代物件(迭代器(生成器---
1. 生成器表示式2
.yield關鍵字))>序列
1. 迭代器:實現__iter__(
)和__next__()2
. 生成器---
1. 生成器表示式2
.yield關鍵字
python中的容器 可迭代物件 迭代器 生成器
容器是一系列元素的集合,str list set dict物件都可以看作是容器,容器都可以被迭代 用在for,while等語句中 在了解完容器物件之後,我們來了解一種特殊的容器物件之可迭代物件。1 是什麼?顧名思義,可迭代物件指的就是可以被迭代的物件。迭代指的就是通過迴圈不斷產生 元素 的一種訪問 ...
迭代器 可迭代物件 迭代器物件
今天的學習內容有 迭代器 可迭代物件 迭代器物件 for迴圈內部原理 生成器和生成器表示式 面向過程程式設計 迭代就是指更新換代的過程,要重複進行,而且每次的迭代都必須基於上一次的結果。我們使用for迴圈的時候就是把元素從容器裡乙個個取出來,這種過程其實就是迭代。迭代器 迭代取值的工具。迭代器的作用...
可迭代物件 迭代器,生成器
可迭代物件 iterator 列表 集合 元組 字典 字串 生成器 我們可以使用isintance 判斷乙個物件是否是iterator物件 生成器 通過列表生成式,我們可以直接建立乙個列表,但是,受到記憶體限制,列表容量肯定是有限的,如果我們僅僅需要訪問前面幾個元素,如果列表元素可以按照某種演算法推...