Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. import json
  2. import pprint
  3.  
  4. class ComputeGraph(object):
  5.     operations = []
  6.     def __init__(self):
  7.         print('init_graph')
  8.         pass
  9.         #gr = json.loads(source, encoding='utf8')
  10.        
  11.     def ComputeGraph(self, *args):
  12.         return self
  13.    
  14.     def add_operation(self, *args):
  15.         print('add_operation')
  16.         self.operations.append(args)
  17.         #print(str(args))
  18.        
  19.     def run(self, *args):
  20.         print('run')
  21.         table = args[0]
  22.         for arg in self.operations:
  23.             print(arg)
  24. class Map(object):
  25.     ''' операция, которая вызывает переданный генератор (называемый мэппером)
  26. от каждой из строк таблицы. Значения, выданные генератором, образуют таблицу-
  27. результат. (Подходит для элементарных операций над строками - фильтраций,
  28. преобразований типов, элементарных операций над полями таблицы etc).
  29. Мэп в нашем задании не тождественен функции map из python, которая реализует
  30. соответствие 1-к-1 (наша по каждой строке может вернуть любое нетрицательное
  31. число строк).'''
  32.    
  33.     def __init__(self, mapper):
  34.         print("map_init")
  35.         self.mapper = mapper
  36.    
  37.     def compute(self, inp):
  38.         print("map_compute")
  39.         outp = [];
  40.         for row in inp:
  41.             for new_row in self.mapper(row):
  42.                 outp.append(new_row)
  43.         return outp  
  44.    
  45. class Sort(object):
  46.     '''сортирует таблицу по какому-то набору колонок лексикографически'''
  47.    
  48.     def __init__(self, *columns):
  49.         print("sort_init")
  50.         self.columns = columns
  51.    
  52.     def compute(self, inp):
  53.         print("sort_sort")
  54.         def comparator(row1, row2):
  55.             for column in self.columns:
  56.                 if row1[column] > row[column]:
  57.                     return True
  58.         outp = inp
  59.         for row1 in range(len(outp) - 1):
  60.             for row2 in range(row1 + 1, len(outp)):
  61.                 if (comparator(outp[row1], outp[row2])):
  62.                     print('lalala')
  63.                     outp[row1], outp[row2] = outp[row2], outp[row1]  
  64.         return outp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement