Verifying and reducing Latin squares with Python 3
You can make few minor improvements like:-


For comparing types use isinstance instead of comparing types using is. is won't work in case of multiple-inheritance. Plus for comparing against multiple types you can do isinstance(n, (str, int)). Read: Differences between isinstance() and type() in python

The elif and else block in is_latin function look redundant to me, you only need to check for mismatch there. Plus if line != valid_combination is more readable than: if not(line == valid_combination).
The else block in reduce_latin is also unreachable and you can remove it too.
Your code has couple of PEP 8 errors that you could check here: http://pep8online.com/