加载中...

菜谱 11:使用列表实现循环数据结构


在一些实际应用中,设计一个循环的数据结构是十分有利的。这里的循环数据结构指的是最后一个元素指向第一元素的结构。Python 内置的 list 能够很容易实现这个任务。:

  1. class Ring(object):
  2. def __init__(self, l):
  3. if not len(l):
  4. raise "ring must have at least one element"
  5. self._data = l
  6. def __repr__(self):
  7. return repr(self._data)
  8. def __len__(self):
  9. return len(self._data)
  10. def __getitem__(self, i):
  11. return self._data[i]
  12. def turn(self):
  13. last = self._data.pop(-1)
  14. self._data.insert(0, last)
  15. def first(self):
  16. return self._data[0]
  17. def last(self):
  18. return self._data[-1]

使用这个结构的方式:

  1. >>> l = [{1:1}, {2:2}, {3:3}]
  2. >>> r = Ring(l)
  3. >>> r
  4. [{1: 1}, {2: 2}, {3: 3}]
  5. >>> r.first()
  6. {1: 1}
  7. >>> r.last()
  8. {3: 3}
  9. >>> r.turn()
  10. >>> r
  11. [{3: 3}, {1: 1}, {2: 2}]
  12. >>> r.turn()
  13. >>> r
  14. [{2: 2}, {3: 3}, {1: 1}]

还没有评论.