import math
def sets(l):
    return map(set, [[]] * l)
class Sudoku(object):
    def __init__(self, lol):
        self.lol = lol
    def is_valid(self):
        l = len(self.lol)
        size = int(math.sqrt(l))
        cols, rows, sq = sets(l), sets(l), sets(l)
        for i, row in enumerate(self.lol):
            rows[i] = set(row)
            for j, col in enumerate(row):
                if type(col) is int and col > 0 and col <= l:
                    cols[j].add(col)
                    sq[i/size * size + j/size].add(col)
        return all([map(len, i).count(l) == l for i in [cols, rows, sq]])
goodSudoku = Sudoku([
  [1,4, 2,3],
  [3,2, 4,1],
  [4,1, 3,2],
  [2,3, 1,4]
])
print(goodSudoku.is_valid())
Navíc to nějak nefunguje...
Traceback (most recent call last):
  File "C:/Users/koss4/PycharmProjects/untitled/test.py", line 30, in <module>
    print(goodSudoku.is_valid())
  File "C:/Users/koss4/PycharmProjects/untitled/test.py", line 15, in is_valid
    rows[i] = set(row)
TypeError: 'map' object does not support item assignment
Process finished with exit code 1