我這樣做是爲了更好地理解iter()
和next()
方法。創建一個反轉迭代器的函數
所以我理解這一點很容易被這樣使用一些內置插件完成:
>>>animal = 'cat'
>>>print(list(reversed(animal)))
['t','a','c']
但是,這也可以完成創建一個類迭代:
class Reverselist():
def __init__(self, data):
self.data = data
self.index = len(data)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index =self.index -1
return self.data[self.index]
def intolist(self):
self.test = [i for i in self]
return self.test
rev = Reverselist('cat')
print(rev.intolist())
['t','a','c']
不過,我在做同樣的事情時遇到了一些麻煩,但使用功能而不是去執行OOO路線。
有沒有辦法做到這一點與功能使用iter()
和next()
方法,而不必求助於理解和循環?
你是什麼意思「使用函數」?它應該很容易將自己的反向列表迭代器作爲生成器函數,但是您至少需要一個循環(或者'while index> 0'或'for index in range(len(lst)-1, - 1,-1)')。 – Blckknght
不要混淆迭代器和迭代器。迭代器不一定必須生成有限序列,因此沒有最後一個元素開始。 – chepner