Neither of your loops is testing whether all the values are the same.
To test whether all the values are the same, put the value in the first entry of the row or column in a variable, then use the all()
function to test the rest of the row or column.
# across
for row in myList:
first = row[0]
if first in ['X', 'O'] and all(col = first for col in row[1:]):
print("Player %s is the winner" % first)
break
else: # This will only be executed if we didn't break out of the loop
# down
for colnum in len(myList[0]):
first = myList[0][colnum]
if first in ['X', 'O'] and all(row[colnum] = first for row in myList[1:])
print("Player %s is the winner" % first)
break
Another way to tell if a list is all equal is with len(set(l)) == 1
(converting a list to a set removes all the duplicates, there will be one element if they're all duplicates), so you can write:
# across
for row in myList:
first = row[0]
if first in ['X', 'O'] and len(set(row)) == 1:
print("Player %s is the winner" % row[0])
break
else: # This will only be executed if we didn't break out of the loop
# down
for colnum in len(myList[0]):
if first in ['X', 'O'] and len(set(row[colnum] for row in myList))) == 1:
print("Player %s is the winner" % myList[0][colnum])
break