Python菜譜11:使用列表實(shí)現(xiàn)循環(huán)數(shù)據(jù)結(jié)構(gòu)

2018-07-25 18:21 更新

在一些實(shí)際應(yīng)用中,設(shè)計(jì)一個(gè)循環(huán)的數(shù)據(jù)結(jié)構(gòu)是十分有利的。這里的循環(huán)數(shù)據(jù)結(jié)構(gòu)指的是最后一個(gè)元素指向第一元素的結(jié)構(gòu)。Python 內(nèi)置的 list 能夠很容易實(shí)現(xiàn)這個(gè)任務(wù)。:

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]

使用這個(gè)結(jié)構(gòu)的方式:

>>> 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}]
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)