[ create a new paste ] login | about

Link: http://codepad.org/ZdegFMJJ    [ raw code | output | fork ]

Python, pasted on Nov 8:
class slc (object):
	def __init__(self, data, start, end):
		self.data = data
		self.start, self.end = start, end
	def __len__(self):
		return self.end - self.start
	def __getitem__(self, idx):
		if isinstance(idx, slice):
			return [self[i] for i in xrange(*idx.indices(len(self)))]
		if idx >= len(self):
			raise IndexError
		idx %= len(self)
		return self.data[self.start+idx]
	def __setitem__(self, idx, val):
		if isinstance(idx, slice):
			start, stop, stride = idx.indices(len(self))
			for i, v in zip(xrange(start, stop, stride), val):
				self[i] = v
			return
		if idx >= len(self):
			raise IndexError(idx)
		idx %= len(self)
		self.data[self.start+idx] = val


L = range(10)

s = slc(L, 2, 5)

print L
print list(s)
print len(s)
s[:] = range(3)
print s[:]
print L


Output:
1
2
3
4
5
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4]
3
[0, 1, 2]
[0, 1, 0, 1, 2, 5, 6, 7, 8, 9]


Create a new paste based on this one


Comments: