Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- class ExtendedList(list):
- def __getattr__(self, name):
- correct = False
- if name == "R" or name == "reversed":
- return self[::-1]
- if name == "S" or name == "size":
- return len(self)
- if name == "F" or name == "first":
- return self[0]
- if name == "L" or name == "last":
- return self[-1]
- raise AttributeError
- def __setattr__(self, name, value):
- if name == "S" or name == "size":
- if (value < len(self)):
- for i in range(len(self) - value):
- self.pop()
- if (value > len(self)):
- for i in range(value - len(self)):
- self.append(None)
- return
- if name == "L" or name == "last":
- self[-1] = value
- return
- if name == "F" or name == "first":
- self[0] = value
- return
- raise AttributeError
- exec(sys.stdin.read())
- -----------------------------------------------------------------------------------------------------------
- import sys
- class ExtendedList(list):
- aliases = {
- 'reversed': 'R',
- 'first': 'F',
- 'last': 'L',
- 'size': 'S'
- }
- def __init__(self, elements=[]):
- list.__init__(self, elements)
- def __setattr__(self, name, value):
- name = self.aliases.get(name, name)
- if (name == 'F'):
- self[0] = value
- elif (name == 'L'):
- self[-1] = value
- elif (name == 'S'):
- if value < 0:
- raise KeyError
- if (value < len(self)):
- del self[value:]
- else:
- self.extend([None] * (value - len(self)))
- else:
- object.__setattr__(self, name, value)
- def __getattr__(self, name):
- name = self.aliases.get(name, name)
- if (name == 'R'):
- return self[::-1]
- elif (name == 'F'):
- return self[0]
- elif (name == 'L'):
- return self[-1]
- elif (name == 'S'):
- return len(self)
- return object.__getattribute__(self, name)
- exec(sys.stdin.read())
- -----------------------------------------------------------------------------------------------------------
- import sys
- class ExtendedList(list):
- def _get_first(self):
- return self.__getitem__(0)
- def _set_first(self, val):
- self.__setitem__(0, val)
- first = property(fget=_get_first, fset=_set_first)
- F = first
- def _get_last(self):
- return self.__getitem__(self.__len__() - 1)
- def _set_last(self, val):
- return self.__setitem__(self.__len__() - 1, val)
- last = property(fget=_get_last, fset=_set_last)
- L = last
- def _get_reversed(self):
- copy = ExtendedList()
- for i in range(self.__len__()):
- copy.append(self[self.__len__() - i - 1])
- return copy
- reversed = property(fget=_get_reversed)
- R = reversed
- def _get_len(self):
- return self.__len__()
- def _set_len(self, val):
- current_length = self.__len__()
- if current_length < val:
- for i in range(val - current_length):
- self.append(None)
- if current_length > val:
- for i in range(current_length - val):
- self.pop()
- size = property(fget=_get_len, fset=_set_len)
- S = size
- exec(sys.stdin.read())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement