Advertisement
Guest User

Untitled

a guest
May 25th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.48 KB | None | 0 0
  1. import sys
  2.  
  3.  
  4. class ExtendedList(list):
  5.     def __getattr__(self, name):
  6.         correct = False
  7.         if name == "R" or name == "reversed":
  8.             return self[::-1]
  9.         if name == "S" or name == "size":
  10.             return len(self)
  11.         if name == "F" or name == "first":
  12.             return self[0]
  13.         if name == "L" or name == "last":
  14.             return self[-1]
  15.         raise AttributeError
  16.  
  17.     def __setattr__(self, name, value):
  18.         if name == "S" or name == "size":
  19.             if (value < len(self)):
  20.                 for i in range(len(self) - value):
  21.                     self.pop()
  22.             if (value > len(self)):
  23.                 for i in range(value - len(self)):
  24.                     self.append(None)
  25.             return
  26.         if name == "L" or name == "last":
  27.             self[-1] = value
  28.             return
  29.         if name == "F" or name == "first":
  30.             self[0] = value
  31.             return
  32.         raise AttributeError
  33.  
  34.  
  35. exec(sys.stdin.read())
  36. -----------------------------------------------------------------------------------------------------------
  37. import sys
  38.  
  39.  
  40. class ExtendedList(list):
  41.     aliases = {
  42.         'reversed': 'R',
  43.         'first': 'F',
  44.         'last': 'L',
  45.         'size': 'S'
  46.     }
  47.  
  48.     def __init__(self, elements=[]):
  49.         list.__init__(self, elements)
  50.  
  51.     def __setattr__(self, name, value):
  52.         name = self.aliases.get(name, name)
  53.         if (name == 'F'):
  54.             self[0] = value
  55.         elif (name == 'L'):
  56.             self[-1] = value
  57.         elif (name == 'S'):
  58.             if value < 0:
  59.                 raise KeyError
  60.             if (value < len(self)):
  61.                 del self[value:]
  62.             else:
  63.                 self.extend([None] * (value - len(self)))
  64.         else:
  65.             object.__setattr__(self, name, value)
  66.  
  67.     def __getattr__(self, name):
  68.         name = self.aliases.get(name, name)
  69.         if (name == 'R'):
  70.             return self[::-1]
  71.         elif (name == 'F'):
  72.             return self[0]
  73.         elif (name == 'L'):
  74.             return self[-1]
  75.         elif (name == 'S'):
  76.             return len(self)
  77.         return object.__getattribute__(self, name)
  78.  
  79. exec(sys.stdin.read())
  80. -----------------------------------------------------------------------------------------------------------
  81. import sys
  82.  
  83.  
  84. class ExtendedList(list):
  85.     def _get_first(self):
  86.         return self.__getitem__(0)
  87.  
  88.     def _set_first(self, val):
  89.         self.__setitem__(0, val)
  90.     first = property(fget=_get_first, fset=_set_first)
  91.     F = first
  92.  
  93.     def _get_last(self):
  94.         return self.__getitem__(self.__len__() - 1)
  95.  
  96.     def _set_last(self, val):
  97.         return self.__setitem__(self.__len__() - 1, val)
  98.     last = property(fget=_get_last, fset=_set_last)
  99.     L = last
  100.  
  101.     def _get_reversed(self):
  102.         copy = ExtendedList()
  103.         for i in range(self.__len__()):
  104.             copy.append(self[self.__len__() - i - 1])
  105.         return copy
  106.     reversed = property(fget=_get_reversed)
  107.  
  108.     R = reversed
  109.  
  110.     def _get_len(self):
  111.         return self.__len__()
  112.  
  113.     def _set_len(self, val):
  114.         current_length = self.__len__()
  115.         if current_length < val:
  116.             for i in range(val - current_length):
  117.                 self.append(None)
  118.         if current_length > val:
  119.             for i in range(current_length - val):
  120.                 self.pop()
  121.     size = property(fget=_get_len, fset=_set_len)
  122.     S = size
  123.  
  124.  
  125. exec(sys.stdin.read())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement