Pythonの組み込み関数のzipに感動したのと、reversedと上手く組み合わせれたのが嬉しくて更新。
def ispalindrome(s): h = len(s) / 2 for a, b in zip(s[:h], reversed(s[h+1:])): if a != b: return 0 return 1
文字列が回文だと1、そうでないと0を返します。
参考
zip()関数 - バリケンのPython日記 - pythonグループ
追記
id:muscovyduck さんにより良い解法をコメントいただいたので追記します。
def ispalindrome(str): return 1 if str == str[::-1] else 0
見た目にも分かりやすいですし、動作時間もこちらのほうが早いです。
21文字の文字列で100万回実行したときの時間を計測したところ、元の関数が4.68秒で新しい関数が0.58秒でした。
今回の文字列操作(str[::-1])も面白いですが、他にもstr[::2]やstr[0:5:2]などあって驚きです。