在一些實際應用中,設計一個循環(huán)的數(shù)據(jù)結構是十分有利的。這里的循環(huán)數(shù)據(jù)結構指的是最后一個元素指向第一元素的結構。Python 內(nèi)置的 list 能夠很容易實現(xiàn)這個任務。:
class Ring(object):
def __init__(self, l):
if not len(l):
raise "ring must have at least one element"
self._data = l
def __repr__(self):
return repr(self._data)
def __len__(self):
return len(self._data)
def __getitem__(self, i):
return self._data[i]
def turn(self):
last = self._data.pop(-1)
self._data.insert(0, last)
def first(self):
return self._data[0]
def last(self):
return self._data[-1]
使用這個結構的方式:
>>> l = [{1:1}, {2:2}, {3:3}]
>>> r = Ring(l)
>>> r
[{1: 1}, {2: 2}, {3: 3}]
>>> r.first()
{1: 1}
>>> r.last()
{3: 3}
>>> r.turn()
>>> r
[{3: 3}, {1: 1}, {2: 2}]
>>> r.turn()
>>> r
[{2: 2}, {3: 3}, {1: 1}]
更多建議: