>>
> a =[1
,2,3
]>>
> b =
list
>>
> c =
>>
>
from collections import iterable
>>
>
isinstance
(a, iterable)
true
>>
>
isinstance
(b, iterable)
false
>>
>
isinstance
(c, iterable)
true
class
myrange
:"""建立乙個自己的range函式"""
def__init__
(self, minn, maxn=
none
, step=1)
:"""初始化myrange"""
self.minn, self.maxn =(0
, minn)
if maxn is
none
else
(minn, maxn)
self.step = step
diff = self.maxn - self.minn # 差
self.cnt = diff // step +(0
if diff % step ==
0else1)
# "//"的意思是向下取整除
# 整句話的意思是向上取整除,獲得輸出物件的個數
self.cur = self.minn
def__getitem__
(self, item)
:"""重寫方法"""
if item < self.cnt:
return self.minn +
(item + self.cnt)
% self.cnt * self.step
raise indexerror(
'索引{}超出了範圍{}'
.format
(item, self.maxn)
)
>>
>
for i in myrange(2,
10,3)
:...
print
(i, end=
' 'if i <
8else
'\n').
..25
8>>
>
range(10
)[-3
]7>>
> myrange(10)
[-3]
7
在這裡插入**片
class
myrange2
:"""建立乙個自己的range函式"""
def__init__
(self, minn, maxn=
none
, step=1)
:"""初始化myrange"""
self.minn, self.maxn =(0
, minn)
if maxn is
none
else
(minn, maxn)
self.step = step
diff = self.maxn - self.minn # 差
self.cnt = diff // step +(0
if diff % step ==
0else1)
# "//"的意思是向下取整除
# 整句話的意思是向上取整除,獲得輸出物件的個數
self.cur = self.minn
def__iter__
(self)
:"""建立迭代器"""
return self
def__next__
(self)
:"""返回下一元素"""
if self.cur < self.maxn:
self.cur += self.step
return self.cur - self.step
else
:raise stopiteration
for i in myrange2(2,
10,3)
:print
(i, end=
' 'if i <
8else
'\n')2
58print
(range(10
)[-3
])7print
(myrange2(10)
[-3]
)traceback (most recent call last)
: file ""
, line 1,in
typeerror:
'myrange2'
object
isnot subscriptable
>>
>a =[1
,2,3
]>>
> b =[4
,5,6
]>>
> c =[4
,5,6
,7,8
]>>
> zipped =
zip(a,b)
# 返回乙個物件
>>
> zipped
<
zipobject at 0x103abc288
>
>>
>
list
(zipped)
# list() 轉換為列表[(
1,4)
,(2,
5),(
3,6)
]>>
>
list
(zip
(a,c)
)# 元素個數與最短的列表一致[(
1,4)
,(2,
5),(
3,6)
]>>
> a1, a2 =
zip(
*zip
(a,b)
)# 與 zip 相反,zip(*) 可理解為解壓,返回二維矩陣式
>>
>
list
(a1)[1
,2,3
]>>
>
list
(a2)[4
,5,6
]>>
>
Python學習筆記 迭代器
from collections import iterable from collections import iterator 可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for...
Python學習筆記 迭代器和迭代器協議
術語概念解釋 關於 for 迴圈 寫乙個迭代器 1 迭代器協議 迭代器協議是一種約定,即物件必須提供乙個 next 方法,執行該方法要麼返回迭代中的下一項,要麼丟擲乙個 stopiteration 異常,終止迭代。2 迭代器 iterator 迭代器是一種物件,一種可以被 next 函式呼叫並不斷返...
python學習筆記10(迭代器)
可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for迴圈的資料型別一般分兩種 1 集合資料型別,如list tuple dict set string 2 是generator,包括生...